2015-11-05 57 views
0

我有一個將數據發送到安全網頁的Windows服務。這在當前通過visual studio 2010運行的控制檯應用程序中工作正常。我已經能夠使用此方法連接和發送數據。來自Windows服務的安全連接錯誤

當我部署和運行Windows服務時出現問題,我現在收到以下錯誤「請求已中止:無法創建SSL/TLS安全通道」。

這是我用來做HTTP POST到網頁

ServicePointManager.Expect100Continue = true; 
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Ssl3; 
ServicePointManager.ServerCertificateValidationCallback += 
      (sender, cert, chain, sslPolicyErrors) => true; 

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
     request.ContentType = "text/xml; encoding='utf-8'"; 
     request.Method = "POST"; 
     doc.Save(request.GetRequestStream()); 

     X509Store store = new X509Store(StoreName.Root, StoreLocation.CurrentUser); 
     store.Open(OpenFlags.ReadOnly); 

     var certif = store.Certificates.Find(X509FindType.FindByThumbprint, "‎539B640BD981BFC48A366B8981B66F301C8A3959", false); 
     request.ClientCertificates.Add(certif); 
     try 
     { 
      using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
     { 

      if (response.StatusCode == HttpStatusCode.OK) 
      { 
       success = true; 
      } 
     } 

     } 
     catch (Exception ex) 
     { 
      error = ex.Message + " " + ex.InnerException; 
     } 

我已經檢查了證書存儲的代碼,正確的證書是在窗口服務的受信任的根。 TLS/SSL連接的另一個方面是否與Window Service不同?任何人的想法將不勝感激。

回答

0

如果有人遇到類似的行爲,則會出現問題,因爲Windows服務沒有足夠的權限。如果服務以我自己的身份登錄,它只能在本地機器上運行。它只能在Windows服務以管理員身份登錄時在單獨的服務器上工作。