我已经设置了一个自托管服务方案,我以编程方式设置了多个服务主机。对于我打开的每个主机,我在跟踪日志中看到以下错误:
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Warning">
<TraceIdentifier>http://msdn.microsoft.com/en-US/library/System.ServiceModel.EvaluationContextNotFound.aspx</TraceIdentifier>
<Description>Configuration evaluation context not found.</Description>
<AppDomain>myprogram.exe</AppDomain>
</TraceRecord>
我读过这是因为使用了未在配置文件中声明的扩展,我确实使用了自定义行为扩展,但是将其添加到.exe的配置文件中没有任何影响:
<system.serviceModel>
<extensions>
<behaviorExtensions>
<add name="myext" type="mytype, myassembly" />
</behaviorExtensions>
</extensions>
....
</system.serviceModel>
请注意,我没有在配置文件中的任何其他位置使用此扩展,我将以编程方式将其添加到服务主机。我甚至设置了一个虚拟行为,使用扩展只是为了看看它是否能解决问题,但事实并非如此。
为什么我在日志中看到此错误?
答案 0 :(得分:1)
我遇到了这个问题,发现我在ServiceReferences.clientconfig文件中有多个identicle自定义绑定。我只是评论了额外的东西,一切都很好。 (我使用Silverlight来调用WCF服务)
<customBinding>
<binding name="SecureTransportNoCredentialsEndpoint">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
<!--<binding name="SecureTransportNoCredentialsEndpoint1">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
<binding name="SecureTransportNoCredentialsEndpoint2">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
<binding name="SecureTransportNoCredentialsEndpoint11">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
<binding name="SecureTransportNoCredentialsEndpoint3">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
<binding name="SecureTransportNoCredentialsEndpoint12">
<binaryMessageEncoding />
<httpsTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>-->
</customBinding>
</bindings>
答案 1 :(得分:0)
就我而言,我的WCF接口包含字符串属性“GCM”的类,然后添加了一个名为“GCM”的新类定义。当我将类名更改为“GCMObj”时,错误就消失了。
答案 2 :(得分:0)
我的经验是,您必须使用服务名称和标记下的其他详细信息手动创建服务。
e.g。
<system.serviceModel>
<services>
<service name="WCF_NameSpace.Service1" behaviorConfiguration="behave">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="bind" contract="WCF_Trace_2.IService1"></endpoint>
</service>
</services>