6

我有一个托管在 IIS 上的 wcf 服务

<%@ ServiceHost Language="C#" Debug="true" Service="MyService" Factory="InitializableServiceHostFactory" %>

我的问题是每次对 MyService 方法的请求都会调用 CreateServiceHost,这使得我用 CreateServiceHost 编写的初始化代码被称为乘法。

4

2 回答 2

2

在我检查了很多关于这个问题后,我发现它与 ASP.NET 动态编译有关,当 Bin 文件夹中的任何内容发生更改时,它会重新编译整个站点,但是我的 WCF 服务写入 Bin 文件夹中的 temp 文件夹重新编译站点,然后重新启动 Application_Start,然后 InitializableServiceHostFactory 重新创建 WCF 服务

我知道这是一个虚拟问题:(

于 2013-05-28T11:51:59.120 回答
0

我怀疑服务主机不是服务类的实例,Carlos Figueira 在他对[Is it necessary to Dispose() when using a custom ServiceHostFactory?]的回答中证实了这一点。

我的CreateServiceHost()应用程序多次调用 in factory ,ArgumentException第二次初始化时抛出一个消息:

The value could not be added to the collection, as the collection already contains an item of the same type: ....

WCF 有时会重用服务主机。我通过检查我的任何自定义行为是否已经在服务主机的Description.Endpoints.Behaviors列表中解决了这个问题,所以我没有第二次初始化我的服务主机。在实践中,我的情况更简单,因为我设置了ServiceAuthorizationManager; 如果我发现它已经设置好了,我会避免再次初始化任何东西。

于 2013-06-27T12:30:12.830 回答