【发布时间】:2015-04-23 01:05:41
【问题描述】:
我有一个 WCF 服务(托管在 IIS 7.5 中),它使用以下方式激活了 SVC 文件较少
<serviceHostingEnvironment>
<serviceActivations>
<add factory="String"
service="String"/>
</serviceActivations>
</serviceHostingEnvironment>
我使用的是自定义主机工厂,而不是默认主机工厂。
服务是 WSTrustServiceContract。现在如果你看到这个类的声明
[ServiceBehaviorAttribute(Name = "SecurityTokenService", Namespace = "http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice",
InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
[AspNetCompatibilityRequirementsAttribute(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WSTrustServiceContract : IWSTrustFeb2005SyncContract,
IWSTrust13SyncContract, IWSTrustFeb2005AsyncContract, IWSTrust13AsyncContract, IWsdlExportExtension, IContractBehavior
所以我们可以推断
- 将调用自定义主机工厂来创建服务实例。
- 一旦创建了服务实例,它就会为所有请求提供服务 (InstanceContextMode.Single)
我的问题是
- 为什么每次调用都会创建自定义主机工厂的实例(我在这个工厂的构造函数中有一个断点。我正在通过附加到 w3wc 实例进行调试)?
- 为什么每次调用都会创建我的服务实例?
【问题讨论】:
-
再次尝试检查您的配置。我试图通过创建示例应用程序来模拟它,但它工作正常,只创建了一个自定义主机工厂和服务的实例。
-
@Lukas:我应该在配置中检查什么?
-
您能告诉我您的自定义主机工厂如何创建该服务的实例吗?