2010-01-22 127 views
4

我有一个ASP.NET MVC网站,当它在本地运行时它工作得很好。一旦我将该站点部署到IIS 7,资源的所有链接都将中断(即脚本文件,图像,css文件)。这可能是一个路线问题,或者它会是一个IIS设置?在IIS7上损坏的图像

这里是我的路线:

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

griegs +戴夫答案似乎帮助你 – 2010-01-22 07:33:24

+0

在这一点上,我将问题孤立到T4MVC,但截至目前仍然遇到问题。 – Lukasz 2010-01-23 21:09:14

回答

2

这不太可能是路由或IIS设置。我见过这种情况的时间通常是因为资源不可用,即不存在。

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

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

+0

所以我发现问题,这是路径。问题是我正在使用T4MVC,并且T4模板中的路径似乎正确,它使用〜/内容作为路径。但是,当网站运行的路径是/内容。感谢至少我有一个地方开始。 – Lukasz 2010-01-22 23:10:04

1

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

+0

所有文件都设置为内容。好的电话,我没有想到。它一定是别的! – Lukasz 2010-01-22 02:32:38

+0

那天发生在我身上...一个pdf文件没有设置,也没有移动到服务器。 – Martin 2010-01-22 02:51:29

1

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

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; 
} 

所以,你可以把它返回任何你想要的,但我不认为返回〜/路径会帮助你。

我可能会误解这个问题。