调用远程Web服务 - “请求失败,HTTP状态为401:未经授权”

时间:2010-06-19 21:44:58

标签: asp.net web-services

我正在呼叫远程服务并使用证书进行身份验证。使用Console App进行测试时,一切正常。从ASP.NET网站(.NET 4.0,IIS7)调用时,我收到响应代码401 - Unauthorized。

我使用以下代码添加证书:

var client = new TheGeneratedProxy();
client.ClientCertificates.Add(new X509Certificate("D:\cert.pfx", "myPassword"));

(注意:我还使用IE将.pfx加载到本地证书存储区。证书已加载到我的“个人”商店 - 所以我怀疑这是问题,因为网站将在不同的帐户。)

1 个答案:

答案 0 :(得分:0)

我认为问题是您的IIS用户(网络服务/ ASPNET)无法访问证书。要授予网络服务以访问商店中的证书,请下载以下工具:winhttpcertcfg(http://www.microsoft.com/downloads/details.aspx?familyid=c42e27ac-3409-40e9-8667-c748e422833f&displaylang=en

现在打开命令提示符并输入:

winhttpcertcfg –g –c LOCAL_MACHINE\My –s ORGNAME –a "Network Service"

请注意,“网络服务”可以替换为任何其他帐户。即如果您已为应用程序池配置了自定义用户,则应将此用户设置为-a参数的值。

ORGNAME应替换为您在创建证书期间指定的组织名称。