2012-08-22 95 views
1

我有一個正在ASP.NET開發服務器上測試的ASP.NET應用程序。該應用程序旨在從Intranet SharePoint站點下載文件。爲此我使用了WebClient.DownloadFile()。但我得到與我登錄到Windows在運行應用程序可以訪問,我想下載該資源的以下exception-授予ASP.NET訪問權限以從Sharepoint網站下載文件

"The remote server returned an error: (401) Unauthorized."

帳戶。

我試着在IIS 7.5上運行應用程序,爲應用程序池提供所需的標識以下載文件。但仍然有同樣的錯誤。

任何想法究竟是什麼問題以及如何克服它?提前致謝!

回答

1

問題得到了通過設置UseDefaultCredentials Web客戶端的屬性爲true

1

假設在SharePoint站點上正常的Windows(NTLM)身份驗證。

你最喜歡的設計行爲是「雙跳委派」有時被稱爲「一跳NTLM地獄」 - 從客戶端(瀏覽器)傳遞到服務器(您的ASP.Net應用程序)的憑據不能用於框。因此,您的ASP.Net應用程序會作爲或多或少的匿名用戶進行自動化處理,並且無法在SharePoint網站上進行授權。

解決此問題的常用方法 - 擁有某種可信賴的帳戶並在該帳戶下運行您的網站代碼。在訪問站點時,您需要在進程帳戶下運行代碼(而不是模擬用戶)。您需要查看代碼才能獲得合理的安全措施,因爲錯誤會允許任何人使用您的網站訪問該特殊帳戶下的SharePoint /其他資源。

0

這是一個Kerberos問題,正如Kirill提到的那樣。在開始設置SPN之前,請先按照this link的建議操作。

我最近有一個令人沮喪的一週,試圖讓Kerberos在一個鎖定的域中工作,並且在最後我發現我所要做的就是將useAppPoolCredentials設置爲true。如果沒有幫助,this link也對我很有用。

祝你好運!