C# WCF异常:无法加载配置中指定的X.509证书标识,如何修复?
我有一个WCF服务库,它有两个接口:FileManager和TaskManager 我想将这些接口的两个端点合并到一个服务中 当我使用一个端点和一个接口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
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>