WCF在IIS上失败。系统找不到指定的文件
我正在尝试创建具有消息安全性的web服务 下面是一个配置:WCF在IIS上失败。系统找不到指定的文件,wcf,Wcf,我正在尝试创建具有消息安全性的web服务 下面是一个配置: <system.serviceModel> <services> <service name="WCFMessage.Service1" behaviorConfiguration="behaviour1"> <endpoint address="" contract="WCFMessage.IService1" binding="wsHttpBindin
<system.serviceModel>
<services>
<service name="WCFMessage.Service1" behaviorConfiguration="behaviour1">
<endpoint address="" contract="WCFMessage.IService1" binding="wsHttpBinding" bindingConfiguration="binding1" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behaviour1">
<serviceDebug includeExceptionDetailInFaults="false" />
<serviceMetadata httpGetEnabled="true"/>
<serviceCredentials>
<serviceCertificate findValue="MyCert"
x509FindType="FindBySubjectName"
storeLocation="LocalMachine"
storeName="My"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="binding1">
<security mode="Message">
<message clientCredentialType="None" negotiateServiceCredential="false"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
</system.serviceModel>
它在本地主机上运行良好,但在IIS上,它给了我一个错误:
系统找不到该文件
指定的
堆栈跟踪:
很可能是那个证书
“CN=MyCert”可能没有私钥
能够进行密钥交换或
进程可能没有对的访问权限
私钥
我尝试了这个方法,但仍然出现错误
非常感谢您的帮助。过去几天我也遇到过类似的情况。我找到了一个我可以接受的解决方法,因此我将与您分享。问题在于IIS应用程序池用户帐户无法访问服务证书私钥文件,或者私钥根本不在其期望的位置 注意:我假设您有自己的证书颁发机构在运行 要解决此问题,请执行以下步骤:
<serviceCredentials>
<serviceCertificate findValue="MyCert"
x509FindType="FindBySubjectName"
storeLocation="CurrentUser"
storeName="My"/>
</serviceCredentials>
(如果可以使用MMC导出/导入证书功能实现这一点会更容易,但由于某些原因,它的行为与我们预期的不同)在过去几天里,我遇到了类似的情况。我找到了一个我可以接受的解决方法,因此我将与您分享。问题在于IIS应用程序池用户帐户无法访问服务证书私钥文件,或者私钥根本不在其期望的位置 注意:我假设您有自己的证书颁发机构在运行 要解决此问题,请执行以下步骤:
<serviceCredentials>
<serviceCertificate findValue="MyCert"
x509FindType="FindBySubjectName"
storeLocation="CurrentUser"
storeName="My"/>
</serviceCredentials>
(如果可以使用MMC导出/导入证书功能实现这一点会更容易,但由于某些原因,其行为与我们预期的不同)谢谢。我找到了解决方案,问题和你的一样。谢谢。我找到了解决办法,问题和你的一样。