Svc aspNetCompatibilityEnabled =“true”导致ServiceActivationException

时间:2009-11-25 10:28:38

标签: web-services svc

我在Web应用程序中有一系列svc文件,它们都运行正常,但我需要运行aspNetCompatibilityEnabled设置为true,现在我得到以下异常

System.ServiceModel.ServiceActivationException:无法激活所请求的服务“...”。有关详细信息,请参阅服务器的诊断跟踪日志。

它谈论的这些跟踪日志在哪里以及可能导致这种情况发生的原因?

由于

2 个答案:

答案 0 :(得分:1)

您可以通过将以下内容添加到web.config来激活广泛的日志记录信息:

<system.diagnostics>
  <trace autoflush="true">
    <listeners>
    </listeners>
  </trace>
  <sources>
    <source name="System.ServiceModel"
            switchValue="Information, ActivityTracing"
            propagateActivity="true">
      <listeners>
        <add name="sdt"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData= "WcfDetailTrace.txt" />
      </listeners>
    </source>
  </sources>
</system.diagnostics>

然后您可以使用SvcTraceViewer.exe查看日志文件

答案 1 :(得分:1)

因此,当将aspNetCompatibilityEnabled变为true时,您需要在几个地方应用更改。首先,我猜你已经在你的web.config文件中完成了它。其次,您需要通过使用AspNetCompatibilityRequirements属性修改服务类来对服务应用更改:

C#

[AspNetCompatibilityRequirements(
    RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MySampleService
{

}

VB

<Activation.AspNetCompatibilityRequirements( _
RequirementsMode:=Activation.AspNetCompatibilityRequirementsMode.Allowed)> _
public class MySampleService 

End Class

如果所有服务都允许,您可以使用此属性修饰基本服务类,因此默认情况下它将由所有服务继承。