我有一个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" />
在此添加,希望能帮助其他人解决这个问题。
谢谢!
答案 0 :(得分:2)
它不太可能是路由或IIS设置。我看到这种情况的时间通常是因为资源不可用,即不存在。
有时,您尝试访问的文件夹的安全性也已设置,并且默认的.net用户未被授予访问权限。
资源路径未正确编码。使用〜/ content代替/ content甚至../../..etc可能有所帮助。
答案 1 :(得分:1)
确保构建操作设置为Content。
答案 2 :(得分:1)
尝试检查您的文件夹权限 - 您是否在非标准文件夹(而不是wwwroot)中?确保IIS_IUSRS组具有Read&amp;对文件夹和子文件夹执行权限。如果这不起作用,请尝试更改权限以暂时向所有人提供完全控制,只是为了查看它是否是权限问题。
答案 3 :(得分:1)
我不确定我是否理解这个问题。 T4MVC输出〜/ path到客户端是错误的,因为〜/是浏览器不理解的服务器端语法。请注意,如果您愿意,可以通过转到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;
}
所以你可以让它随意返回,但我不认为返回〜/ path会对你有帮助。
我可能会误解这个问题。
答案 4 :(得分:0)
转到您的站点或Web应用程序->身份验证->启用匿名身份验证。如果可行,则可以保留原有状态,或者适当调整权限。