0

WCFサービスを構成していて、ルーティングを使用して構成しています。404メッセージの本文に次のように記載されていることを除いて、すべてが希望どおりに機能しています。Service Endpoint not found.

404の応答本文を空にします。

これが私のルート登録です:

public class Global : HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);

    }

    private void RegisterRoutes(RouteCollection routes)
    {
        routes.Add(new ServiceRoute("RootService", new WebServiceHostFactory(), typeof(ServiceProvider)));
    }

これが私のサービスクラスです:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceContract]
public class ServiceProvider 
{
    [WebGet]
    public Test ValidUrl()
    {
        return new Test();
    }
}

このURLhttp:// localhost / RootServiceの応答に空の404本文を含めるにはどうすればよいですか?

4

1 に答える 1

0

私はこれを行うためのいくつかの方法を見つけました、そして私は以下に2つをリストしました。重要なのは、UriTemplateを*として設定することです。これにより、メソッドは、他の方法では明示的に一致しないすべてのルートに一致します。

    [WebGet(UriTemplate="*")]
    public void ErrorForGet()
    {
        throw new WebFaultException(HttpStatusCode.NotFound);
    }

私もこの方法が好きではありませんが、それは機能します:

    [WebGet(UriTemplate="*")]
    public void ErrorForGet()
    {
        WebOperationContext.Current.OutgoingResponse.SetStatusAsNotFound();
    }

これらのメソッドには両方とも、要求元のクライアントに提供するメッセージとして文字列を受け取るオーバーロードがあります。ただし、WebFaultExceptionは、次のようにそのルートを進む必要があります。throw new WebFaultException<string>("Resource not found", HttpStatusCode.NotFound);

于 2012-04-28T18:22:25.300 に答える