我創建了一個Web應用程序,該應用程序調用需要客戶端證書進行身份驗證的Web服務。以下是我如何構建請求的一段代碼:通過HttpWebRequest發送客戶端證書,間歇工作
// 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應用程序或它所在的服務器的配置有關。
任何可能的解決方案或意見,非常感謝!
嗨拉里,剛剛出於興趣,你找到了解決辦法嗎?歡呼跳跳虎 – WooHoo 2010-10-12 21:10:34