Asp.net

如何在我的網站上託管我的 WCF 服務?

  • April 29, 2012

我是 WCF 的新手。我開發了一個範例 WCF 服務。我的服務使用basicHttp綁定。

我使用 WAS 在本地 IIS 7.5 中託管我的服務,它工作正常。現在我想在我的網站上託管我的服務。

我搜尋Google,但它們中的大多數都託管在 IIS 的 localhost 中。請告訴我該怎麼做?最好參考一些教程或分步指南。

我相信你基本上有兩種選擇:

選項 1 - “bin”部署(首選選項)

  1. 將您的 WCF 服務編譯為 DLL(類庫)
  2. 在 IIS 中創建網站
  3. 將 WCF DLL 複製到網站的.\bin文件夾中
  4. 在該網站中創建一個*.svc文件
  5. 在網站文件夾中添加一個適當web.config的來定義您的端點和服務配置等。

您的 WCF 服務現在可以通過網站的基地址以及*.svc文件名訪問,例如

http://myserver/someweb/Myservice.svc

*.svc會看起來像這樣:

<%@ ServiceHost Language="C#" Debug="true" 
   Service="WCF_Simple_Service.HelloIndigoService"  %>

屬性表示實現服務的Service=類 - 完全限定其名稱空間。

選項 2 - 把東西放進去App_Code

  1. 在 IIS 中創建網站
  2. 將所有 WCF 相關*.cs文件直接放入.\App_Code文件夾中
  3. 在該網站中創建一個*.svc文件
  4. 在網站文件夾中添加一個適當web.config的來定義您的端點和服務配置等。

您的 WCF 服務現在可以通過網站的基地址以及*.svc文件名訪問,例如

http://myserver/someweb/Myservice.svc

*.svc會看起來像這樣:

<%@ ServiceHost Language="C#" Debug="true" 
   Service="Service" 
   CodeBehind="~/App_Code/Service.cs" %>

一個簡單的範例web.config可能如下所示:

<system.serviceModel>
   <behaviors>
       <serviceBehaviors>
           <behavior name="WithDebug">
               <serviceMetadata httpGetEnabled="true" />
               <serviceDebug includeExceptionDetailInFaults="true" />
           </behavior>
       </serviceBehaviors>
   </behaviors>
   <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
 <services>
   <service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="WithDebug">
     <endpoint
         address=""
         binding="basicHttpBinding"
         contract="SimpleWCF.IHelloIndigoService" />
     <endpoint
         address="mex"
         binding="mexHttpBinding"
         contract="IMetadataExchange" />
   </service>
 </services>
</system.serviceModel>

您基本上定義了您的<service>標籤 - 再次:name=表示實現服務的類 - 完全限定其名稱空間。它必須包含至少一個端點——“mex”端點是可選的——但非常有用,尤其是對於開發和測試。它允許客戶端“發現”服務並獲取其服務描述,以便與它進行互動。

在 IIS 中部署服務後,您可以使用WCF 測試客戶端(WCF 免費提供)或SoapUI(一種通用 SOAP 測試實用程序)等工具查看它的執行情況(提供免費版本供您使用) .

引用自:https://stackoverflow.com/questions/10374131