比方說,我們有2個項目與以下佈局我怎麼能一個IIS環境中編程註冊一個WCF服務
- 工程「網絡」
- Global.asax的(我認爲這個目標的登記內例如,
void Application_Start(System.Object sender, System.EventArgs e
) - 的web.config
- Global.asax的(我認爲這個目標的登記內例如,
- 工程 「WCF」
-
個
- DemoService.cs
- IDemoService.cs
web.config
看起來像這樣
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="fooBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="wcf.DemoService"
behaviorConfiguration="fooBehavior">
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<endpoint address=""
binding="wsHttpBinding"
contract="wcf.IDemoService" />
</service>
</services>
</system.serviceModel>
</configuration>
所以...現在...某處(如上面提到我想到global.asax
)我需要註冊,當瀏覽到URIwcf.DemoService
得到解決和mex-請求wcf.IDemoService
得到解決閱讀att用來獲取WSDL。
這通常通過創建.svc
文件來實現,並把標頭中的第一行,例如:
<%@ ServiceHost Language="C#" Debug="true" Service="wcf.DemoService" %>
在例如通過
var serviceHost = new ServiceHost(typeof (wcf.DemoService));
serviceHost.Open();
並與service
元素內的host
元素結合這一個控制檯應用程序指定URI - 或使用ServiceHost
另一個構造函數過載,但我寧願去一個靜態註冊(或任何web.config
註冊適用於IIS 7.5) - 這可能嗎?如果是這樣,怎麼樣?
你想達到什麼目的?你的問題的標題看起來與最後一段無關。 – 2012-07-17 13:55:43
@LadislavMrnka不是真的:一個典型的WCF在IIS中的託管是通過使用一個.svc文件(我已經爲此添加了一個例子)來實現的,而不是通過a實現託管。svc-file我寧願去'global.asax'或'web.config'內註冊一個_static_(_URI_不能改變,除非例如重新編譯 - 與僅移動.svc文件相反)(例如,如果我添加一個'host'元素到'service'元素的一個地址,我會得到一個拒絕訪問的異常) – 2012-07-17 14:06:33
.svc文件已經是靜態的了,因爲你必須和web服務器的管理員能夠重命名它如果您是Web服務器的管理員,則可以更改配置文件,有時甚至可以更改global.asax(如果內聯)。你可以使用.NET 4.0嗎?因爲它提供了你想要的,但是.NET 3.5沒有。 – 2012-07-17 15:03:17