2016-09-26 55 views
4

我想盡可能隱藏我的WCF。如果有人向我的WCF輸入url,則會顯示響應「未找到端點」。如果他們嘗試獲取請求,它們將以不允許的方法顯示,因爲我的服務只接受發佈請求。C#隱藏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> 

我想,除非他們有確切的地址和詳細的參數後,顯示沒有任何反應。我不確定是否需要更改我的「自定義錯誤部分」。我的理解是自定義錯誤只適用於拋出異常的情況。未找到端點並且不允許的方法不是例外。

任何幫助或建議將不勝感激。

回答

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