[英]How to specify ServiceHostFactory for self-hosted WCF service with no SVC file
[英]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.