我正在VS2010中开发一个内部.Net应用程序,以便在我公司的内部网中进行部署。该站点使用Windows身份验证,以便用户在成功通过域身份验证后无需登录。对于一个页面,我需要从Intranet获取一些信息,包括照片和其他信息。对于员工照片,我使用的是控件:
<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:image的凭据,以便我可以传递当前经过身份验证的用户的凭据而不提示用户进行身份验证?
更新
曾经有一种方法可以在img标签中指定用户名+密码,如:
<img src="http://username:password@server/photos/1.jpg">
或类似的东西。这样凭据可用于访问目录?现在这有可能吗?
答案 0 :(得分:1)
答案 1 :(得分: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;
这解决了我在图像中遇到的身份验证问题。