2011-06-16 149 views
1

我們有以下幾種服務的需要:WCF問題 - 公開服務

  1. 公開。用戶通過X509證書認證,
  2. 內部。由我們的網站消耗。用戶在網站上進行身份驗證,並將用戶名傳遞給服務。
  3. 公開發售。用戶基於與其IP地址匹配的傳入令牌(我們需要支持的傳統功能)進行認證。

現在,我通過在WCF服務項目中創建SVC文件來實現#1。這些配置在配置文件中。我沒有在該部分指定任何內容,並且好像SVC文件使用默認綁定(沒有name屬性的綁定)。這聽起來正確嗎?

如果我要實現其他類型的服務,我需要在web.config中的部分中指定服務,並將它們指向它們的特定綁定/行爲,或創建三個單獨的服務項目。最佳做法是什麼?

我們希望使用T4模板自動生成我們的服務(svc文件)。直到現在,這個過程已經結束,但是如果我繼續,我必須生成web.config文件(這使得維護工作變得困難)。有什麼辦法可以將配置文件的system.service模型部分分開嗎?

謝謝。

回答

0

web.config(和app.config)文件可以拆分爲單獨的文件,如下所示。你可以封裝整個system.serviceModel元素,如果這是你想要的。

<system.serviceModel> 
    <services configSource="services.config" /> 

    <behaviors configSource="behavior.config" /> 

    <bindings> 
     <wsHttpBinding> 
      <binding name="Http" receiveTimeout="00:10:00"> 
       <security mode="None"> 
        <transport clientCredentialType="None" /> 
        <message clientCredentialType="None" establishSecurityContext="false" /> 
       </security> 
      </binding> 
     </wsHttpBinding> 
    </bindings> 

    <!-- rest of WCF elements inline as in the bindings element or in other files --> 
</system.serviceModel> 

您只需要創建每個引用的文件。這是將環境(即Dev,QA,Staging,Prod)特定設置放入單獨文件的好方法,以便您可以對部署腳本進行參數化。