0

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

IIS 错误

    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();
    }
4

2 回答 2

0

您使用的用户名可能在服务器上没有读/写权限。进入对应用户的用户设置,开启读写权限。还要检查您是否提供了正确的图像路径。希望能帮助到你。

于 2012-11-11T07:15:52.937 回答
0

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

如果您的站点根目录位于:

d:\inetpub\mysite\

您的图片位于:

d:\inetpub\mysite\uploads\images\

那么你在数据库中的虚拟路径需要是:

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

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

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

于 2012-11-11T08:48:49.080 回答