【问题标题】:Image not showing on IIS when MVC app is hosted on IIS..works on ASP.NET Devlopment server just fine当 MVC 应用程序托管在 IIS 上时,图像未显示在 IIS 上。在 ASP.NET 开发服务器上工作就好了
【发布时间】:2011-06-14 23:16:33
【问题描述】:

我有一个看起来像这样的视图 {{img src="/Scenario/Status/id" alt="status" /}}

(替换上面的这些{})

这是控制器的代码

    public ActionResult Status(int? id)
    {
        // Calculate the status
        int no = new Random().Next(0, 2);
        string file = "green.jpg";
        if (no == 0)
        {
            file = "red.jpg";
        }
        else if (no == 1)
        {
            file = "yellow.jpg";
        }
        else if (no == 2)
        {
            file = "green.jpg";
        }
        var path = Server.MapPath("/Content/images/");
        var filePath = path + file;

        return new FileContentResult(System.IO.File.ReadAllBytes(filePath), "image/jpeg");
    }

当我在 visualstudio 上运行时,这工作得很好。但是当我将它部署到本地 IIS 时,我看不到这些图像。 我检查了在 IIS 下的 Windows 功能中检查了“StaticContent”选项,并且在 IIS 上启用了 MIME 类型。从 Visual Studio 发布后,我还检查了 *.jpg 文件是否存在于我的应用程序的“inetpub”文件夹下。由于我使用图像的虚拟路径而不是硬压缩文件名,它应该可以工作......

我刚试过这个

{{img src="../Content/Images/Green.jpg" alt="status" /}} 这也有效.. :(

还有什么问题?

【问题讨论】:

  • 部署到 IIS 时是部署到虚拟目录还是站点根目录?

标签: asp.net-mvc


【解决方案1】:

找到了在 IIS 根站点下的子文件夹中托管的应用程序中显示图像的解决方案

这行得通..

img src = "" alt="chart"

【讨论】:

  • 如果图片来自 CSS 样式,你怎么能做到这一点。
【解决方案2】:

它被部署到一个虚拟目录 C:\inetpub\wwwroot\testsite.... 这是问题吗

【讨论】:

    【解决方案3】:

    更深入地了解问题的一种快速方法是在 global.asax 的 Application_Error 方法中设置断点,并查看当图像请求进入时引发了什么异常。

    如果您已部署在 IIS 中的虚拟目录下,则需要使用 Server.MapPath("~/Content/images/") Asp.Net 会将~ 替换为应用程序根目录。

    【讨论】:

    • 那没用...我在 Global.asax.cs 文件中没有看到名为 Application_Error 的方法
    • 您可以创建它protected void Application_Error(object sender, EventArgs e){}。检查那里的异常Server.GetLastError() 应该会产生一个有用的异常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2011-11-05
    相关资源
    最近更新 更多