2011-03-06 104 views
1

我已經通過使用自定義WCF廣告應用程式爲WCF服務器:如何在IIS7.5上託管自定義wcf應用程序(服務器)?

ServiceHost<AlertService> alertServiceHost = new ServiceHost<AlertService>(); 
configuredEndpoints = alertServiceHost.Description.Endpoints; 
alertServiceHost.Open(); 

現在,我有對生產部署的一個問題是IIS7.5。

我不知道如何部署在IIS上。因爲我只知道我必須在IIS上創建svc文件進行託管。現在,我只有控制檯應用程序作爲wcf服務工作。

如何將其轉換爲在IIS上部署?

謝謝。

回答

2

如果要在IIS託管方案中使用自定義服務主機,則需要提供將返回該類型服務主機的自定義ServiceHostFactory,並在SVC文件中配置該服務主機工廠。現在

public class MyOwnServiceHostFactory : ServiceHostFactory 
{ 
    protected override ServiceHost CreateServiceHost(Type t, Uri[] baseAddresses) 
    { 
     return new MyOwnCustomServiceHost(t, baseAddresses); 
    } 

    public override ServiceHostBase CreateServiceHost(string service, Uri[] baseAddresses) 
    { 
     // The service parameter is ignored here because we know our service. 
     ServiceHost serviceHost = new ServiceHost(typeof(HelloService), baseAddresses); 
     return serviceHost; 
    } 
} 

而在你的SVC文件,您:沿着線的東西 -

基本上,您的自定義服務主機工廠必須從ServiceHostFactory下降並重寫一個方法,返回您的自定義服務主機的一個實例需要有:

<%@ ServiceHost Language="C#" Debug="true" 
     Service="YourNamespace.YourService" 
     Factory="YourNamespace.MyOwnServiceHostFactory" %> 

瞭解更多關於:

+0

太謝謝你了。我會盡快嘗試。順便說一句,我需要創建空白svc文件輸入這些標記。這是對的嗎? – tong

1

在IIS中託管時,您不要自己創建ServiceHost。它是IIS的責任和爲什麼.svc文件存在的原因。 Svc文件指示工作人員處理應該如何託管哪些服務。

SVC文件由簡單的指令(標記)的:

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.MyService" CodeBehind="MyService.svc.cs" %> 

這是.svc文件的例子託管在本地創建的服務,但你可以省略CodeBehind屬性,並使用完整的類型描述Service屬性託管服務類來自另一個組件。

另請檢查How to: Host WCF service in IIS

相關問題