0

私のWCFRESTサービスには、GetUser(username)メソッドがあります。

throw new WebFaultException<string>("there is no this user", HttpStatusCode.NotFound);

私のasp.netクライアントでは、上記の例外をキャッチして、ラベルに「このユーザーは存在しません」と表示したいと思います。しかし、私が次のようにコーディングしようとすると:

MyServiceClient client = new MyServiceClient;
try
{
    client.GetUser(username);
}
catch (Exception ex)
{
    Label.Text = ex.Message;
}

「このユーザーは存在しません」ではなく、「NotFound」というメッセージが表示されます。

「このユーザーはいない」というメッセージを表示するにはどうすればよいですか?


20/4
私のRESTサービスで:

[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
        UriTemplate = "{username}")]
void GetUser(username);

.svcクラス:

 public void GetUser(username)
    {
        try
        {
            Membership.GetUser(username);
            WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK;
        }
        catch (Exception ex)
        {
            throw new WebFaultException<string>("there is no this user", HttpStatusCode.NotFound);
        }
    }
4

1 に答える 1

0

ドキュメントを調べると、Detailではなく、を表示する必要があることは明らかですMessage。あなたの行は次のようになります:

MyServiceClient client = new MyServiceClient;
try
{
    client.GetUser(username);
}
catch (FaultException<string> ex)
{
    var webFaultException = ex as WebFaultException<string>;
    if (webFaultException == null)
    {
       // this shouldn't happen, so bubble-up the error (or wrap it in another exception so you know that it's explicitly failed here.
       rethrow;
    }
    else
    {
      Label.Text = webFaultException.Detail;
    }
}

編集:例外タイプを変更しました

WebFaultException<string>また、スローされた古い例外ではなく、関心のある特定の例外()をキャッチする必要があります。特に、タイプはDetailオンのみであるため、オンではありません。WebFaultException<string>Exception

WebFaultExceptionクラスを参照してください

于 2012-04-19T11:50:21.210 に答える