2010-10-07 76 views
2

我創建了一個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應用程序或它所在的服務器的配置有關。

任何可能的解決方案或意見,非常感謝!

+0

嗨拉里,剛剛出於興趣,你找到了解決辦法嗎?歡呼跳跳虎 – WooHoo 2010-10-12 21:10:34

回答

1

您可以嘗試設置保持活動狀態爲假,儘管可能會導致性能下降。

0

就在失去偶然的機會時,任何人都會遇到這種情況。我們從未確定原因,但是在服務器上重新安裝.NET框架似乎「解決」了問題。雖然不理想,但這是5年來第一次發生,因此現在我們的決議足夠快樂。