【发布时间】:2011-04-22 14:19:17
【问题描述】:
我创建了一个 Web 应用程序,它调用需要客户端证书进行身份验证的 Web 服务。这是我如何构建请求的 sn-p:
// Grab Certificate
X509Certificate2 cert2 = new X509Certificate2(AppDomain.CurrentDomain.BaseDirectory + GiftCardConfig.A2A_CertificateLocation, GiftCardConfig.A2A_CertificatePassword, X509KeyStorageFlags.MachineKeySet);
// First Call Status Account
StringBuilder urlStatus = new StringBuilder(GiftCardConfig.A2A_URL + "webservice.asp?");
urlStatus.Append("userid=" + GiftCardConfig.A2A_UserID);
urlStatus.Append("&pwd=" + GiftCardConfig.A2A_Password);
urlStatus.Append("&sourceid=" + GiftCardConfig.A2A_SourceID);
urlStatus.Append("&cardnum=" + cardNumber);
urlStatus.Append("&purseno=" + GiftCardConfig.A2A_PurseID);
urlStatus.Append("&status=ACTIVATE");
// Build HTTP Request
HttpWebRequest wrStatus = (HttpWebRequest)WebRequest.Create(urlStatus.ToString());
wrStatus.KeepAlive = true;
wrStatus.Method = "GET";
wrStatus.Accept = "text/xml";
wrStatus.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E)";
wrStatus.ClientCertificates.Clear();
wrStatus.ClientCertificates.Add(cert2);
这一切都有效,但只是间歇性的。托管 Web 服务的服务器大约每 24 小时返回一个 403:Forbidden 错误。修复它的唯一方法是对运行 Web 应用程序的服务器执行 iisreset。我们完全被这个问题难住了,想知道这个问题是否与 Web 应用程序或托管它的服务器的配置有关。
非常感谢任何可能的解决方案或 cmets!
【问题讨论】:
-
嗨,拉里,您是否出于兴趣找到了解决方案?欢呼跳跳虎
标签: c# asp.net iis client certificate