簡體   English   中英

WCF-實施ServiceHostFactory以用於IIS上下文(svc文件)

[英]WCF - Implementing a ServiceHostFactory to use into IIS context (svc file)

我已經成功實現了自托管WCF服務。 對於遺留問題,主機綁定配置是從非標准來源(而不是app.config)讀取的。 當將此服務移植到IIS時,遇到了加載設置的問題,我發現該解決方案將涉及實現從ServiceHostFactory繼承的類。

不過,我的問題是, CreateServiceHost方法僅從SVC文件接收具體的類型和URI,但是我想重用該類進行進一步的實現並需要更多信息:例如定義ServiceContract和綁定的接口已經配置。

我從@carlosfigueira找到了這篇很棒的文章 ,但是它的實現使用工廠以一對一的關系返回特定於該服務的主機。 我確實可以做到,但是這將導致一些特定的工廠,具有大量的復制和粘貼代碼,我會避免這樣做。 可能嗎? 如果是這樣,我該怎么辦?

沒有內置的方法可以發現服務類實現了哪些合同,但是代碼應該不會太難。 這與下面的函數類似。 如果您有多個合同類型,則需要一些邏輯來確定相對地址(即,如果您有一個合同,請使用“”,如果您有多個合同,請使用合同名稱作為地址)。

private IEnumerable<Type> GetContractType(Type serviceType) 
{ 
    if (HasServiceContract(serviceType))
    { 
        yield return serviceType; 
    } 

    var contractInterfaceTypes = serviceType.GetInterfaces() 
        .Where(i => HasServiceContract(i));

    foreach (var type in contractInterfaceTypes)
    {
        yield return type;
    }

    // if you want, you can also go to the service base class,
    // interface inheritance, etc.
} 

private static bool HasServiceContract(Type type) 
{ 
    return Attribute.IsDefined(type, typeof(ServiceContractAttribute), false); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM