WCF跟踪错误:找不到配置评估上下文

时间:2010-11-18 22:19:39

标签: .net wcf

我已经设置了一个自托管服务方案,我以编程方式设置了多个服务主机。对于我打开的每个主机,我在跟踪日志中看到以下错误:

<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>

请注意,我没有在配置文件中的任何其他位置使用此扩展,我将以编程方式将其添加到服务主机。我甚至设置了一个虚拟行为,使用扩展只是为了看看它是否能解决问题,但事实并非如此。

为什么我在日志中看到此错误?

3 个答案:

答案 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>