2012-12-27 56 views
2

我有Windows授權的OData網絡服務。如何使數據服務發送一個憑證而不是兩個請求?

connection = new BaseWCFService.ASUTBEntities(new Uri("pathtoservice")); 
connection.Credentials = CredentialCache.DefaultCredentials; 
string SID = System.Security.Principal.WindowsIdentity.GetCurrent().User.Value; 
var finduser = (from o in IS.connection.User 
       where o.SID == SID 
       select o).ToList(); 

此代碼使兩個請求,而不是一個。首先,它發送簡單的文本/ HTML請求時,得到401錯誤,然後驗證發送普通的原子請求:

enter image description here

如何讓他做出與身份驗證一個請求,並避免發送text/html的要求嗎?

回答

1

我只是採取一種猜測,但我要說的是構造器連接到Web服務了。

也許是這樣的:

new BaseWCFService.ASUTBEntities(new Uri("pathtoservice"), CredentialCache.DefaultCredentials); 

connection = new BaseWCFService.ASUTBEntities(); 
connection.Credentials = CredentialCache.DefaultCredentials; 
connection.Url = new Uri("pathtoservice"); 

但我又猜。然而,由於第一個請求具有未授權,因此構造者似乎沒有獲得憑證即可連接。有一個類似的自定義功能之前,我做了一個函數的重寫,並且在執行基本函數之前先添加了憑證,它已經解決了。 (在我的情況我還需要兩個請求,因爲我想從初始化結果)

+0

沒有,Web服務只允許有一個說法,沒有其他替代加時賽它的構造。我認爲,客戶端嘗試連接到服務而不發送憑據來理解服務器允許它。但我只是不需要它=) – user666

+0

可能有API或功能來阻止到某個IP的傳出連接(也許使用防火牆)。之後您可以再次啓用它。如果這個問題很有用,或者即使不過分,問題也會繼續存在。 –

+0

是的,這就是爲什麼這個問題在這裏=)我找不到任何API的函數來防止重複請求。 – user666

相關問題