2014-04-03 132 views
0

我跟隨此answer從一個不同的問題,試圖讓我的WCF服務只處理GET請求。我已將[WebGet]添加到我的操作中,添加了端點行爲<webHttp />,將默認端點更改爲使用所述行爲,並將默認端點的綁定更改爲webHttpBindingWCF服務參考不包括綁定和客戶端端點

的web.config的system.servicemodel樣子:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="webBehavior"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
    multipleSiteBindingsEnabled="true" /> 

    <services> 
    <service name="TestServiceLibrary.TestService"> 
     <endpoint behaviorConfiguration="webBehavior" 
     address="" 
     binding="webHttpBinding" 
     contract="TestServiceLibrary.ITestService" /> 
     <endpoint 
     address="mex" 
     binding="mexHttpBinding" 
     contract="IMetadataExchange" /> 
    </service> 
    </services> 
</system.serviceModel> 

這使我的服務調用,如:TestService.svc/GetData?value=x和偉大工程。現在我想將一個服務引用添加到客戶端項目。當我這樣做時,客戶端項目的app.config文件不會獲得配置的綁定和客戶端端點。如果我刪除了上述行爲webBehavior,請將默認端點綁定更改爲wsHttpBinding,然後重新添加客戶端的服務引用 - 客戶端綁定和端點已成功添加,但我失去了GET支持。

我知道我可以使用wsHttpBinding保留默認端點,並用不同的地址設置爲綁定webHttpBinding<webHttp />行爲添加一個終點,但我真的很喜歡的客戶端應用程序使用GET是。

編輯:

我也有興趣在爲什麼失敗配置在這種情況下進行更新。我想讓這項服務的消耗低摩擦(通過Visual Studio添加服務參考,然後開始撥打電話),因此手動設置客戶端配置文件並不理想。

回答

0

請嘗試下面的配置。我沒有測試過,但應該可以正常工作。另外,我會建議你自己使用this example。請注意,ISampleService接口(在您的情況下爲TestServiceLibrary.ITestService)以及此接口引用的所有數據協定應該位於單獨的程序集中,該程序集由服務和客戶機引用爲dll。

<system.serviceModel> 
    <client> 
     <endpoint behaviorConfiguration="webBehavior" address="url_to_TestService.svc" binding="webHttpBinding" contract="TestServiceLibrary.ITestService" /> 
    </client> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="webBehavior"> 
       <webHttp /> 
      </behavior> 
     </endpointBehaviors> 
    </behaviors> 
</system.serviceModel> 
+0

感謝您的回答。我知道這聽起來很挑剔,但我真的希望它是一個低摩擦的考驗,以消費這項服務,並且不得不手動設置配置文件將會太多,以至於不能問一些想要使用這個的各方。我想我應該修改我的問題,包括我也有興趣瞭解爲什麼通過Visual Studio添加服務引用在此情況下不包含配置。 – Ethan

+0

如果你自己實現wcf客戶端(就像我建議的那樣),你也可以在代碼中設置所有這些設置。 – pepo

+0

對不起,但我真的試圖避免任何手動重複的客戶端配置,即使它在代碼中。自從Visual Studio在一種情況下優雅地處理配置,然後在另一種情況下完全沒有處理配置時,我很難在這一點上繼續前進。 – Ethan

相關問題