我创建了一个MCV 3应用程序并将其部署到我的组织中的开发服务器。它在我的开发机器上运行正常。但是,我注意到在开发服务器中,即使我已正确登录,应用程序也会将我重定向到Account / LogOn?ReturnUrl =%2f网页。我也看到有时一些资产(CSS,Javascript,图像)也没有服务。
显示的错误信息如下。刷新页面后,应用程序工作正常。如果我在一段时间内没有访问该应用程序,则会出现错误。 有什么想法吗?
>应用程序中的服务器错误。无法找到资源。
描述:HTTP 404.您正在寻找的资源(或其中一个 依赖项)可能已被删除,其名称已更改,或者是 暂时不可用。请查看以下网址并制作 确保它拼写正确。
请求的网址:/帐户/登录
答案 0 :(得分:3)
这很常见。对于资源样式表等,通常是不使用@ Content.Url的结果。我的猜测是,对于其他问题,您可能会硬编码链接而不是使用@ Url.Action。这很常见,我已经遇到了很多次。
基本上在开发环境中你并不真正关心虚拟目录 - 但是在生产环境中它更像是一个问题。
我认为/ Account / Login在使用IIS IIS时指向根目录,您希望通过虚拟目录指向此路由。如果链接是通过<%= Html.ActionLink%>之类的东西生成的,那么你没事。但是如果你有一些javascript并且你正在调用一个URL,或者如果你将你的链接硬编码到/ MyController / MyList那么它将无法找到它。
与css文件相同。如果您在创建新项目时查看Site.css文件的访问方式,那么您将看到如下内容:
< link href ='<%= Url.Content(“〜/ Content.Site.css”)%>'等..等等。
如果这是有道理的,请告诉我。
答案 1 :(得分:2)
解决方案是在IIS中禁用表单身份验证。
答案 2 :(得分:2)
您可能会看到这一点,因为您的web.config文件包含错误的allow role =“RoleNameHere”
如果您为此类角色设置了webconfig页面,请确保该角色与您设置登录角色的角色相匹配。例如,您可能已经写了Administrators
而不是正确的Administrator
。正确编写角色后,ReturnUrl会消失,您可以在登录后再次访问该页面。
<location path="AdminDepartments.aspx">
<system.web>
<authorization>
<allow roles="Administrator"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
答案 3 :(得分:1)
在后面的代码中,将它放在一个可以被所有页面访问的类中:
Public String SiteRootPath = (New Control).ResolveUrl("~/");
在前端,放入母版页文件:
var jvSiteRootPath="<%=SiteRootPath %>";
现在,您可以将其用于需要从根路径引用的所有网址。
答案 4 :(得分:0)
我认为您应该启用您网站的Anonymous Authentication
以及Forms Authentication
。
在IIS
上选择您的应用,然后在功能视图中选择身份验证。