C# 隐藏 WCF 隐藏端点未找到响应
C# hide WCF hide endpoint not found response
我正在尝试尽可能多地隐藏我的 WCF。如果有人向我的 WCF 输入 url,他们将显示响应 "Endpoint not found"。如果他们尝试获取请求,则会显示不允许的方法,因为我的服务只接受 post 请求。
我的 web.config
中已经包含以下内容
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp helpEnabled="false" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceDebug includeExceptionDetailInFaults="False" />
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
</behavior>
</serviceBehaviors>
</behaviors>
除非他们有准确的 url 和准确的 post 参数,否则我不想显示任何响应。我不确定是否需要更改 "Custom error section"。我的理解是自定义错误仅适用于抛出异常时。未找到端点和不允许的方法也不例外。
如有任何帮助或建议,我们将不胜感激。
我建议结合 IDispatchMessageInspector 或 IDispatchOperationSelector 实施 IServiceBehavior 或 IEnpointBehavior。这样,当收到请求时,您可以编写代码来做出自定义响应。
我没有完全符合您需要的示例,但您可以查看下面的文章,其中我修改了外发消息的 XML 名称空间标记。我的想法是,如果请求不符合您的条件,您可以简单地 return null 或 404。还包括一些关于该主题的 MSDN 文章。
阅读这篇文章https://blogs.msdn.microsoft.com/carlosfigueira/2011/05/09/wcf-extensibility-operation-selectors/
如果你想抛出404,你可以从OperationSelector中抛出,如下所示:
...
throw new System.ServiceModel.Web.WebFaultException(System.Net.HttpStatusCode.NotFound);
...
我正在尝试尽可能多地隐藏我的 WCF。如果有人向我的 WCF 输入 url,他们将显示响应 "Endpoint not found"。如果他们尝试获取请求,则会显示不允许的方法,因为我的服务只接受 post 请求。
我的 web.config
中已经包含以下内容 <behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp helpEnabled="false" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceDebug includeExceptionDetailInFaults="False" />
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" />
</behavior>
</serviceBehaviors>
</behaviors>
除非他们有准确的 url 和准确的 post 参数,否则我不想显示任何响应。我不确定是否需要更改 "Custom error section"。我的理解是自定义错误仅适用于抛出异常时。未找到端点和不允许的方法也不例外。
如有任何帮助或建议,我们将不胜感激。
我建议结合 IDispatchMessageInspector 或 IDispatchOperationSelector 实施 IServiceBehavior 或 IEnpointBehavior。这样,当收到请求时,您可以编写代码来做出自定义响应。
我没有完全符合您需要的示例,但您可以查看下面的文章,其中我修改了外发消息的 XML 名称空间标记。我的想法是,如果请求不符合您的条件,您可以简单地 return null 或 404。还包括一些关于该主题的 MSDN 文章。
阅读这篇文章https://blogs.msdn.microsoft.com/carlosfigueira/2011/05/09/wcf-extensibility-operation-selectors/
如果你想抛出404,你可以从OperationSelector中抛出,如下所示:
...
throw new System.ServiceModel.Web.WebFaultException(System.Net.HttpStatusCode.NotFound);
...