4

我有一个 ASP.NET MVC 站点,当我在本地运行它时它工作得很好。一旦我将该站点部署到 IIS 7,所有指向资源的链接都会被破坏(即脚本文件、图像、css 文件)。这可能是路由问题还是 IIS 设置?

这是我的路线:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("elmah.axd");
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Search",
        "Basic/Page/{page}",
        new { controller = "Search", action = "Basic" }
    );

    routes.MapRoute(
        "Default",                                                                          // Route name
        "{controller}/{action}/{id}",                                                       // URL with parameters
        new { controller = MVC.Welcome.Name, action = MVC.Welcome.Actions.Index, id = "" }  // Parameter defaults
    );
}

编辑:

我使用 T4MVC 模板引用所有内容。当模板使用 ~/content/ 指定路径时,模板是正确的。问题是,当生成 html 时,输出不包含“~”,它只是 /content/。

<img src="<%= Links.Content.Images.logo_png %>" alt="Logo" />

<img src="/Content/Images/logo.png" alt="Logo" />

笔记:

问题实际上是 web.config 中的这一行有问题。原来 2011 年 1 月 1 日不是星期五,而是星期六。由于某种原因,它仍然不喜欢那条线。

<clientCache httpExpires="Fri, 1 Jan 2011 15:30:00 UTC" cacheControlMode="UseExpires"/>

将其更改为此就可以了;

<clientCache cacheControlMode="UseExpires" httpExpires="Tue, 19 Jan 2038 03:14:07 GMT" />

在这里添加它,希望它可以帮助其他人解决这个问题。

谢谢!

4

5 回答 5

2

它不太可能是路由或 IIS 设置。我看到这通常是因为资源不可用,即不存在。

有时,您尝试访问的文件夹的安全性已设置,而默认的 .net 用户尚未被授予访问权限。

资源的路径编码不正确。使用 ~/content 而不是 /content 甚至 ../../..etc 可能会有所帮助。

于 2010-01-22T03:29:36.627 回答
1

不确定我是否理解这个问题。T4MVC 将 ~/ 路径输出到客户端是错误的,因为 ~/ 是浏览器不理解的服务器端语法。请注意,如果您愿意,可以通过转到 T4MVC.settings.t4 来更改此处理,它具有:

// You can change the ProcessVirtualPath method to modify the path that gets returned to the client.
// e.g. you can prepend a domain, or append a query string:
//      return "http://localhost" + path + "?foo=bar";
private static string ProcessVirtualPathDefault(string virtualPath) {
    // The path that comes in starts with ~/ and must first be made absolute
    string path = VirtualPathUtility.ToAbsolute(virtualPath);

    // Add your own modifications here before returning the path
    return path;
}

所以你可以让它返回你想要的任何东西,但我不认为返回 ~/ 路径会对你有所帮助。

我可能对这个问题有点误解。

于 2010-02-04T17:35:22.867 回答
1

确保构建操作设置为内容。

于 2010-01-22T02:24:35.840 回答
1

尝试检查您的文件夹权限 - 您是否在非标准文件夹(不是 wwwroot)中?确保 IIS_IUSRS 组对文件夹和子文件夹具有读取和执行权限。如果这不起作用,请尝试更改权限以暂时将完全控制权授予所有人,以查看这是否是权限问题。

于 2010-01-22T07:29:53.033 回答
0

转到您的站点或 Web 应用程序 -> 身份验证 -> 启用匿名身份验证。如果这行得通,你可以这样离开,如果你对它没问题,或者适当地调整权限。

于 2019-04-19T22:41:26.193 回答