在我的MVC 3项目中,我有一个带有jquery + css文件的模板。在授权页面中没有问题我可以使用所有这些文件和模板。但是在登录页面中存在链接文件的问题。
文件结构如下:
在_Layout.cshtml中,链接是这样的:
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<link href="@Url.Content("../../assets/css/main.css")" rel="Stylesheet" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Cuprum' rel='stylesheet' type='text/css' />
<link href="@Url.Content("~/Content/themes/base/jquery.ui.all.css")" rel="Stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.7.min.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("../../assets/scripts/spinner/jquery.mousewheel.js")"></script>
<script src="@Url.Content("../../assets/scripts/spinner/ui.spinner.js")" type="text/javascript"></script>
<script type="text/javascript" src="@Url.Content("../../assets/scripts/fileManager/elfinder.min.js")"></script>
但是在萤火虫中我得到了这样的错误:
语法错误:localhost / Account / LogOn?ReturnUrl = / Scripts / jquery-1.7.min.js“
应用程序查找不同的路径。我该怎么办?
由于
在我的示例代码中,您可以看到我使用它:
<script src="@Url.Content("~/Scripts/jquery-1.7.min.js")" type="text/javascript"></script>
但没有希望。在firebug中我可以看到该页面试图从“/Account/LogOn?ReturnUrl=/Script/jquery.js”加载jquery.js。
答案 0 :(得分:4)
您可以尝试添加路由以忽略javascript / css文件,因此在Global.asax的RegisterRoutes
中,您可以添加以下内容:
routes.IgnoreRoute("{*js}", new { js = @".*\.js(/.*)?"});
routes.IgnoreRoute("{*css}", new { css = @".*\.css(/.*)?"});
但是,如果您使用内置身份验证并且具有类似于以下内容的授权节点:
<system.web>
<authorization>
<deny users="*"/>
</authorization>
<system.web>
然后,.NET将自动拒绝对未经身份验证的用户映射到.NET的任何文件的请求。因此,您需要使用位置节点来允许访问脚本文件夹:
<location path="scripts">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
当您使用MVC时,在控制器操作上使用AuthorizeAttribute而不是在web.config中使用授权节点可能更容易。
答案 1 :(得分:1)
使用../..
~
@Url.Content("...")
内的所有网址都应以波浪号开头。
答案 2 :(得分:1)
您应该配置您的网络文件夹的安全性,添加
<强> IUSR 强>
,
<强> IIS_IUSRS 强>
并为其分配读取和执行权限。