2012-11-11 79 views
0

我使用VS 2010开发Web应用程序。我将上传的图像存储在服务器的物理路径中,并且还在IIS 7.5中创建了虚拟路径(下面的屏幕截图)。在授权中,显示一条警告。对于使用贝洛代码,我尝试从服务器检索图像,但是图像不显示。在问题中,在虚拟路径还是代码路径中提及?图像不能显示在网页

IIS Error

private void CallImage() 
    { 
    SqlConnection SqlCon = new SqlConnection(GetConnectionString()); 
    SqlCon.Open(); 
    string query = "SELECT Cmp_DocPath FROM Company_Info WHERE 
          Vendor_ID= '" + ddlVendorID.SelectedValue + "'"; 
    SqlCommand SqlCmd = new SqlCommand(query, SqlCon); 
    SqlDataAdapter da = new SqlDataAdapter(SqlCmd); 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
    string ImageName = Convert.ToString(dt.Rows[0][0].ToString()); 
    Image1.ImageUrl = this.ResolveUrl("D:/Upload/Commerical Certificates/"+ImageName); 
    // Image1.ImageUrl = this.ResolveUrl("D:\\Upload\\Commerical Certificates\\"+ImageName); 
    // Image1.ImageUrl = this.ResolveUrl("~\\Upload\\Commerical Certificates\\"+ImageName); 
    SqlCon.Close(); 
    } 
+1

那么呈现的图像源是什么意思呢? – MikeSmithDev

回答

0

您不能将物理位置引用到图像,并期望它可以在网站上运行。将路径存储为图像的根目录中的虚拟路径。例如:

如果您的网站根目录是:

d:\inetpub\mysite\ 

而您的影像在:

d:\inetpub\mysite\uploads\images\ 

那么你的虚拟路径诠释,他的数据库必须是:

~\uploads\images\image1.jpg 
~\uploads\images\image2.jpg 

然后,您可以将其设置为ImageUrl属性,并且不需要解析它(Image控件会自动执行该操作)。

我的猜测是,你有这个问题的原因是因为你试图引用不在网站内的图像,即使你通过访问NETWORK SERVICE来开发你的开发环境, IIS_IUSRS,您将此应用程序移动到生产环境中的第二个,您将遇到问题。更不用说在安全性和模块性方面做事是一种非常糟糕的方式。

0

您所使用的用户名可能没有对服务器读/写权限。转到相应用户的用户设置并启用读取和写入权限。同时检查你是否给出了正确的图像路径。希望能帮助到你。