Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF异常:无法加载配置中指定的X.509证书标识,如何修复?_C#_Wcf_Wcf Security_Endpoint - Fatal编程技术网

C# WCF异常:无法加载配置中指定的X.509证书标识,如何修复?

C# WCF异常:无法加载配置中指定的X.509证书标识,如何修复?,c#,wcf,wcf-security,endpoint,C#,Wcf,Wcf Security,Endpoint,我有一个WCF服务库,它有两个接口:FileManager和TaskManager 我想将这些接口的两个端点合并到一个服务中 当我使用一个端点和一个接口IFileManager时,它工作得很好,然后在我创建另一个接口ITaskManager并添加一个新端点后,服务停止工作。它在TaskManager端点上显示停止,在FileManager端点上显示错误: System.invalidoOperationException:无法加载配置中指定的X.509证书标识。 如何修复它 <?xml v

我有一个WCF服务库,它有两个接口:FileManager和TaskManager

我想将这些接口的两个端点合并到一个服务中

当我使用一个端点和一个接口
IFileManager
时,它工作得很好,然后在我创建另一个接口
ITaskManager
并添加一个新端点后,服务停止工作。它在TaskManager端点上显示停止,在FileManager端点上显示错误:

System.invalidoOperationException:无法加载配置中指定的X.509证书标识。

如何修复它

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
  <compilation debug="true" />
</system.web>
<!-- When deploying the service library project, the content of the config file must be added to the host's app.config file. System.Configuration does not support config files for libraries. -->
 <system.serviceModel>
   <diagnostics wmiProviderEnabled="false" />

   <bindings>
  <netTcpBinding>
    <binding name="TcpBindingRule" maxBufferPoolSize="2097152" maxBufferSize="2097152"
      maxReceivedMessageSize="2097152" />
  </netTcpBinding>
</bindings>

<services>
  <service behaviorConfiguration="Service1Behavior" name="WcfServiceLibrary1.FileManagerService">
    <clear />
    <endpoint address="FileManagerEndpoint" binding="netTcpBinding"
      bindingConfiguration="TcpBindingRule" name="FileManagerEndpoint"
      contract="WcfServiceLibrary1.IFileManager" listenUriMode="Explicit">
      <identity>
        <dns value="" />
        <certificateReference x509FindType="FindBySubjectDistinguishedName" />
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"
      listenUriMode="Explicit">
      <identity>
        <certificateReference storeName="My" storeLocation="LocalMachine"
          x509FindType="FindBySubjectDistinguishedName" />
      </identity>
    </endpoint>
    <endpoint address="TaskManagerEndpoint" binding="netTcpBinding"
      bindingConfiguration="" name="TaskManagerEndpoint" contract="WcfServiceLibrary1.ITaskManager">
      <identity>
        <dns value="" />
      </identity>
    </endpoint>
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://Markor:1991/filemanager" />
      </baseAddresses>
    </host>
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="Service1Behavior">
      <serviceMetadata httpGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

</system.serviceModel>
</configuration>

看起来您将标识放在了错误的端点下。将其移动到endpoint address=“TaskManagerEndpoint”元素下,而不是mex下

 <endpoint address="TaskManagerEndpoint" binding="netTcpBinding"
      bindingConfiguration="" name="TaskManagerEndpoint" contract="WcfServiceLibrary1.ITaskManager">
      <identity>
        <dns value="" />
        <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" />
      </identity>
    </endpoint>

看起来您将标识放在了错误的端点下。将其移动到endpoint address=“TaskManagerEndpoint”元素下,而不是mex下

 <endpoint address="TaskManagerEndpoint" binding="netTcpBinding"
      bindingConfiguration="" name="TaskManagerEndpoint" contract="WcfServiceLibrary1.ITaskManager">
      <identity>
        <dns value="" />
        <certificateReference storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectDistinguishedName" />
      </identity>
    </endpoint>