我是WCF新手。我開發了一個示例WCF服務。我的服務使用basicHttp
綁定。如何在我的網站託管我的WCF服務?
我在本地IIS 7.5中使用WAS託管我的服務,它工作正常。現在我想在我的網站上託管我的服務。
我搜索谷歌,但其中大部分都託管在本地IIS中。請告訴我如何做到這一點?最好參考一些教程或一步一步的指南。
我是WCF新手。我開發了一個示例WCF服務。我的服務使用basicHttp
綁定。如何在我的網站託管我的WCF服務?
我在本地IIS 7.5中使用WAS託管我的服務,它工作正常。現在我想在我的網站上託管我的服務。
我搜索谷歌,但其中大部分都託管在本地IIS中。請告訴我如何做到這一點?最好參考一些教程或一步一步的指南。
你有兩種基本的選擇,我相信:
選項1 - 「bin」 的部署(首選)
.\bin
文件夾中*.svc
文件在網站web.config
來定義您的終端和服務配置等現在你的WCF服務將在網站的基礎地址到達,加上*.svc
的名字文件,例如
http://myserver/someweb/Myservice.svc
你*.svc
會是這個樣子:
<%@ ServiceHost Language="C#" Debug="true"
Service="WCF_Simple_Service.HelloIndigoService" %>
的Service=
屬性是指實現服務的類 - 其命名空間完全合格。
選擇2 - 把東西到App_Code
*.cs
文件到.\App_Code
文件夾WCF*.svc
文件中創建一個網站
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 Test Client)或者SoapUI這是一個通用SOAP測試實用程序(爲您提供免費版本)使用)。
選項2中的錯誤behaviorConfiguration =「true」正確的是behaviorConfiguration =「WithDebug」 –
@PavelJedlicka:你絕對是對的 - 謝謝你指出這個錯誤 - 修正! –
舊線,如果有人發現,但它...而不是你的* .SVC你也可以創建一個在您的Global.asax:
static Global()
{
RouteTable.Routes.Add(new ServiceRoute("ExternalServices/SOAP/test", new ninjectServiceHostFactory(), typeof(testService)));
}
我正面臨類似的問題。你能否詳細說明你的答案? –
@ mav3n:如果您正在託管一個網站並想要託管一個WCF服務(在您的網站中),那麼您可以在global.asax中添加上面的代碼。這樣你就不需要添加一個單獨的* .svc文件。你會像你一樣會創建一個服務。 在我的例子中我使用Ninject,但顯然你可以使用默認的構造函數。 – Roelant
參見:如何舉辦IIS中的WCF服務( http://msdn.microsoft.com/en-us/library/ms733766.aspx) - 無論是「localhost」還是任何其他服務器都完全不相關 - 只需遵循這些步驟即可。 –