【问题标题】:ASP.net MVC 3 route for jpg files用于 jpg 文件的 ASP.net MVC 3 路由
【发布时间】:2012-11-27 15:31:20
【问题描述】:

我在 global.asax 中有一个带有此路由的 MVC 3 应用程序

routes.MapRoute(
            "ProfilePictureSmall",                             // Route name
            "small/{PictureID}.jpg",                           // URL with parameters
            new { controller = "Picture", action = "Show", Size = "small", PictureID = Guid.Empty }  // Parameter defaults
        );

这是来自我的控制器的操作

public ActionResult Show(string Size, Guid PictureID)

此路由在我的计算机上不起作用,但在其他本地计算机以及测试服务器和实时服务器上有效。 它曾经也可以在我的 PC 上运行,但我最近重新安装了我的系统,所以我认为它与此有关。

有人有什么想法吗?

PS:所有其他路线都可以正常工作。 如果我删除 .jpg

,这个也可以工作

【问题讨论】:

  • 您的机器上运行的是什么版本的 IIS?确保您在与其他所有人相同的环境中运行该网站。
  • 我有 IIS 7.5.7600.16385,和测试/直播机器和其他本地机器一模一样
  • 我怀疑这是 IIS 路由错误。根据stackoverflow.com/questions/6971203/…,HTTP 处理程序可能是一种方法?
  • 感谢您的链接,但考虑到代码在许多其他机器上都可以工作(就像在我重新安装系统之前一样),我怀疑这是一个 IIS 配置问题
  • 您找到解决方案了吗?我也有同样的问题。 (使用 MVC 4)

标签: asp.net asp.net-mvc-3 routing iis-7.5 jpeg


【解决方案1】:

对我来说,将此行添加到 system.webServer 中的 web.config

<modules runAllManagedModulesForAllRequests="true" />

修复它。

顺便说一句。我正在使用 .Net MVC 4.0

Source

【讨论】:

  • 我已经有那套了。我正在使用 MVC 3.0。我可能会在不久的将来迁移到 MVC 4
  • 你也试过设置吗? routes.RouteExistingFiles = true
  • 我没有。奇怪的是,相同的代码(包括配置文件)在许多其他机器上都可以正常工作。这就是为什么我猜测它与我的 IIS 配置或类似的东西有关
  • 奇怪... /small/{PictureID}.jpg - 这些文件是否实际存在于该位置?如果是这样,routes.RouteExistingFiles = true 是 nessersarry。当你说它不起作用时,它会忽略你的路线并只显示原始图像,还是给你一个错误?
【解决方案2】:

由于是全新安装的 Windows,.NET Framework 可能已在 IIS 之前安装并且可能未正确注册,因此静态文件处理程序可能会尝试提供不存在的 jpg。

尝试运行aspnet_regiis.exe -i

【讨论】:

    【解决方案3】:

    我终于通过重新安装 IIS 让它工作了。

    我不知道我到底做了什么,但这里是我在 Windows 7 上安装 IIS 时检查过的功能 控制面板/关闭 Windows 功能/Internet 信息服务

    这些是我所做的唯一更改(没有代码/配置更改)

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2017-05-13
      相关资源
      最近更新 更多