2011-09-07 53 views
1

我正在VS2010中開發一個內部.Net應用程序,以便在我公司的Intranet內進行部署。該站點使用Windows身份驗證,以便用戶在成功通過域身份驗證時不必登錄。對於一頁,我需要從內部網獲取一些信息,包括照片和其他信息。對於員工的照片,我使用的是控制:設置img基本身份驗證的憑據

<asp:Image ID="imgPhoto" Style="display: inline-block" runat="server" CssClass="EmployeePhoto" 
       alt="Photo not available" /> 

從後端,這讓我改變照片的網址如下改變顯示哪張照片,這取決於用戶的選擇:

imgPhoto.ImageUrl = string.Format("http://{0}/{1}.jpg", MySitePath, employeePhotoPath); 

但是路徑受密碼保護。是否有任何方法可以明確提供用於訪問asp:映像的憑據,以便我可以傳遞當前已通過身份驗證的用戶的憑據,而無需提示用戶進行身份驗證?

UPDATE

曾經有指定的用戶名+密碼,比如img標籤的方式:

<img src="http://username:[email protected]/photos/1.jpg"> 

或類似的東西。這樣憑證可以訪問目錄嗎?這現在有可能嗎?

+1

您正在使用哪個版本的IIS?這一點很重要。另外,你在這裏交織了三個不同的問題。第一個關於Firefox的是可以解決的;然而,關於使用匿名的第二個問題隱藏在你的問題中。第三,關於第三方不夠複雜,無法通過用戶名和密碼..好吧,它提出了一個問題,你爲什麼試圖走下NTLM的道路開始。 – NotMe

+0

我使用在Windows 2003服務器上運行的IIS V6.0。我們正在使用的PDF服務僅轉到我們提供的URL,加載頁面並將其導出到PDF。我無法將用戶名/密碼傳遞給服務,所以我確實試圖找到一種程序化方式(我不知道該怎麼說)設置用於從Intranet獲取照片的用戶名和密碼。我只是將Firefox問題用於更具體的問題示例。我的「匿名」頁面設置爲使用Windows域用戶帳戶進行身份驗證並具有訪問Intranet照片的權限。我怎樣才能不使用NTLM? – Rondel

回答

1

我結束了使用WebClient類設置憑據進行身份驗證到其他服務器,然後下載照片局部:

   WebClient myWC = new WebClient();      
       myWC.Credentials = new System.Net.NetworkCredential(bioSearchUsername, bioSearchPassword); 
       string photoPath = Server.MapPath("~/images/Employees/" + employee + ".jpg"); 
       myWC.DownloadFile(imageLocation, photoPath); 

在那之後,我引用的服務器上的照片的本地副本:

imgPhoto.ImageUrl = photoPath; 

這解決了我在映像中遇到的身份驗證問題。

1
+0

這是有用的,但只適用於我的機器。我需要爲需要使用該應用程序的每個人提供解決方案。此外,這不會解決無法連接到Intranet資源的外部服務。感謝您的建議 – Rondel