使用Ninject在Azure上部署时,WCF服务出现故障

时间:2012-10-01 21:21:25

标签: wcf azure ninject servicehost

从今天早上起我就收到了以下错误:(

  

无法激活所请求的服务'http://10.175.156.xx:yyyyy / SomeService.svc'。有关详细信息,请参阅服务器的诊断跟踪日志。

当我在Azure上打开svc日志时,我看到以下警告和错误:

  

W:无法打开Ninjet.Extensions.Wcf.NinjectIISHostingServiceHost`1 [MyNameSpace.Servicelayer.SomesSrvice   W:Faulted Ninject.Extensions.WCf.NinjectIISHostingServiceHost [MyNamespace.ServiceLayer.SomeService]   W:ServiceHost出现故障

有时,我会看到以下错误,然后是上面的警告:

  

E:加载服务的性能计数器失败。性能计数器将不可用于此服务。实例'SomeService@||SomeService.svc'已存在于CounterSet'e829b6db-21ab-453b-83c9-d980ec708edd'中。   参数名称:InstanceName

上周工作正常,我没有看到Azure的任何变化。

不过,它在当地运作良好。

编辑:由于我还不能回答我自己的问题,我正在编辑帖子以包含“解决方案”:(

`OK!看起来问题是缺少一些参考文献:(

我向WCF项目添加了一个类库项目,该类库引用了MVC 4.`

1 个答案:

答案 0 :(得分:0)

两位提到应用程序正常运行并且问题开始发生。正如您所提到的那样,引用丢失了,由于缺少引用,正在运行的应用程序停止工作并不奇怪。当问题开始出现时是否有任何触发,即VM回收,部署更新等,或者您是否已将之前的MVC更新为MVC4?

关于您的“服务失败的加载性能计数器”问题,它可能是 由ServiceHost严密关闭/打开序列中的计时问题引起的。 ServiceHost会维护特定的性能计数器,这些计数器无法进行垃圾回收并导致此异常。您可以使用以下代码解决此问题:

GC.Collect() 
GC.WaitForPendingFinalizers()

根据我的经验,由于缺少特定配置,可能会发生“请求的服务 * 无法激活”的问题,由于应用程序中的连接时间较长或运行时问题而导致超时。确定您的问题可能通过添加适当的引用来解决,但您可能还需要查看服务配置以进一步避免此类问题。