1

我正在做一个项目,该项目使用英语和阿拉伯语两种语言。阿拉伯语版本位于子文件夹 (Ar) 中。

Visual Studio 本地主机中的两个版本一切正常。但是当我将网站部署到真实服务器时。我注意到阿拉伯语版本中的图像将获得与英文版本相同的路径(因此不会显示图像)。

我通过以下代码上传子文件夹中的图像:

string fileExt = System.IO.Path.GetExtension(fileBgUpload.FileName);
string filename;
string guid = Guid.NewGuid().ToString();
try
{
    if (fileExt != "")
    {
        if (fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".JPG" || fileExt == ".JPEG")
        {
            if (fileBgUpload.HasFile)
            {
                filename = Path.GetFileName(fileBgUpload.FileName);
                fileBgUpload.SaveAs(Server.MapPath("/img/Gallery/") +  filename + guid + ".jpg");
                imgBackground.ImageUrl = ("/img/Gallery/") + filename + guid + ".jpg";
            }
        }
    }
}

所以在数据库中,图像 url 将是

/img/Gallery/Imagename.jpg

在 Visual Studio 中,当我运行网站时,一切正常。图片网址是:

localhost:1020/Ar/img/Gallery/Imagename.jpg  

服务器(主机)上的相同内容为图像提供以下 URL:

www.mydomain.com/img/Gallery/Imagename.jpg

这是我的问题,图像不会显示,因为它获取主文件夹的路径。

有任何想法吗?谁能告诉我我在做什么是正确的?以及为什么在这种情况下在视觉工作室中一切正常。

4

1 回答 1

1

部署网站时,服务器使用 IIS,文件夹 (Ar) 很可能更改为虚拟目录。

在 Visual Studio 中,您应该做的第一件事是将 Visual Studio 本地服务器更改为 IIS Express。然后,为 (Ar) 文件夹创建一个虚拟目录,看看是否得到相同的结果。

要创建虚拟目录,请在此处阅读

您应该在代码中修改的最后一件事是将“/Ar/”添加到字符串路径,甚至在将其保存到数据库之前。

例如

imgPathForDb="/Ar/"+ your string path

或者

"/Ar/img/Gallery/" + filename + guid + ".jpg";

大多数开发人员更喜欢 IIS 而不是 Visual Studio 本地服务器。这就是为什么我强烈建议您在未来的项目中使用 IIS Express。

于 2016-07-08T02:14:42.590 回答