Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC:CSS文件存在时返回302错误_Asp.net Mvc_Iis_Routing_Http Status Code 302 - Fatal编程技术网

Asp.net mvc ASP.NET MVC:CSS文件存在时返回302错误

Asp.net mvc ASP.NET MVC:CSS文件存在时返回302错误,asp.net-mvc,iis,routing,http-status-code-302,Asp.net Mvc,Iis,Routing,Http Status Code 302,今天早上,我在localhost的ASP.NETMVC2站点上的单个CSS文件上返回了一个302错误,我不知道是什么原因导致了这个错误 localhost站点使用iis7.5,尽管我在IIS方面的经验有限,所以我没有深入了解那里可能发生的事情 CSS文件的URL为: http://localhost/MySite/Content/Site.css?v=16 响应上的位置标头如下所示: /MySite/Account/Login?ReturnUrl=%MySite%2fContent%2fSit

今天早上,我在localhost的ASP.NETMVC2站点上的单个CSS文件上返回了一个302错误,我不知道是什么原因导致了这个错误

localhost站点使用iis7.5,尽管我在IIS方面的经验有限,所以我没有深入了解那里可能发生的事情

CSS文件的URL为:

http://localhost/MySite/Content/Site.css?v=16
响应上的位置标头如下所示:

/MySite/Account/Login?ReturnUrl=%MySite%2fContent%2fSite.css%3fv%3d16&v=16
这让我觉得MVC正在重定向静态文件或类似的东西,但是如果是这样的话,那么我希望我的所有图像、CSS和JavaScript文件都会执行与它们不同的操作。为了以防万一,下面是Global.ascx中的
RegisterRoutes()
的简化版本:

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

    routes.MapRoute("", "Account/{action}/", new { controller = "Account" });
    routes.MapRoute("", "{action}", new { controller = "Home", action = "Index" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults               
    );

    routes.MapRoute(
        "Error",
        "{*url}",
        new { controller = "Home", action = "ResourceNotFound" }
    );
}
另外,如果我将CSS文件的名称改为Site2.CSS并引用它,同样的事情也会发生


发生了什么事?

重定向到登录方法使其看起来像是因为目录或文件的权限,而不是MVC路由捕获它。(如果它被MVC路由捕获,则可能会导致错误,无法确定要使用哪个控制器和/或操作。)


ASP.NET MVC本身不使用静态文件,但如果ASP.NET通常决定匿名用户无权访问CSS文件或其目录,ASP.NET将重定向到登录URL,这将是一个ASP.NET MVC操作。

看起来web.config中的授权规则表明,您必须通过身份验证才能查看css页面。您应该能够通过登录并查看是否能够正确提供css文件来证明这一点

我将在web.config中添加一个location部分,以删除内容目录上的授权要求。取自



啊,就是这样。这是一个特定CSS文件的权限问题,而不是整个内容目录(这会使所有静态内容都发生相同的情况)。但仍然不确定这些权限是如何更改的。授予AppPool用于授权的帐户的权限修复了该问题。我也有同样的问题,而且是对文件本身的权限,而不仅仅是对目录的权限。我已经检查了,这个答案让我再次检查。。我的不只是在文件上,而是让我第五次审查权限,因为它证实了我的想法。。在我的例子中,我的比较环境在sites文件夹上打了一个“Users”组。我不会说这是一个最佳实践,只是碰巧是环境缺失的群体。当然,直接使用IUSR是有效的,但我保持它们的匹配以防止混淆。
<!-- This section gives the unauthenticated user access to all of the files that are stored in the Content folder.  -->
<location path="content">
<system.web>
    <authorization>
        <allow users ="*" />
    </authorization>
</system.web>
</location>