C#隐藏WCF隐藏端点未找到响应

时间:2016-09-26 22:34:15

标签: c# wcf hide

我试图尽可能地隐藏我的WCF。如果有人将网址输入我的WCF,则会显示响应"未找到端点"。如果他们尝试获取请求,则会显示不允许的方法,因为我的服务只接受发布请求。

我的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>

我想显示没有回应,除非他们有确切的网址和确切的帖子参数。我不确定是否需要更改我的&#34;自定义错误部分&#34;。我的理解是自定义错误仅适用于抛出异常的情况。未找到端点且不允许使用方法也不例外。

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:1)

我建议结合IDispatchMessageInspector或IDispatchOperationSelector实现IServiceBehavior或IEnpointBehavior。这样,当收到请求时,您可以编写代码来进行自定义响应。

我没有完全符合您需求的示例,但您可以查看下面的文章,其中我在外发邮件上修改XML命名空间标记。我的想法是,如果请求不符合您的标准,您只需返回null或404.还包括一些关于该主题的MSDN文章。

How can I create custom XML namespace attributes when consuming a legacy SOAP service?

https://msdn.microsoft.com/en-us/library/system.servicemodel.description.iservicebehavior(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.servicemodel.description.iendpointbehavior(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchmessageinspector(v=vs.100).aspx

https://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchoperationselector(v=vs.100).aspx

答案 1 :(得分:0)

阅读这篇文章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);
...