我的应用程序让我重定向到Account / LogOn?ReturnUrl =%2f

时间:2011-08-01 20:30:19

标签: asp.net asp.net-mvc-3

我创建了一个MCV 3应用程序并将其部署到我的组织中的开发服务器。它在我的开发机器上运行正常。但是,我注意到在开发服务器中,即使我已正确登录,应用程序也会将我重定向到Account / LogOn?ReturnUrl =%2f网页。我也看到有时一些资产(CSS,Javascript,图像)也没有服务。

显示的错误信息如下。刷新页面后,应用程序工作正常。如果我在一段时间内没有访问该应用程序,则会出现错误。 有什么想法吗?

  应用程序中的服务器错误。

     

无法找到资源。

     

描述:HTTP 404.您正在寻找的资源(或其中一个   依赖项)可能已被删除,其名称已更改,或者是   暂时不可用。请查看以下网址并制作   确保它拼写正确。

     

请求的网址:/帐户/登录

5 个答案:

答案 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)

像ek_ny说的那样,这是非常常见的问题。您应该在全局范围内为您的应用程序创建这两个变量。

在后面的代码中,将它放在一个可以被所有页面访问的类中:

Public String SiteRootPath = (New Control).ResolveUrl("~/");

在前端,放入母版页文件:

var jvSiteRootPath="<%=SiteRootPath %>";

现在,您可以将其用于需要从根路径引用的所有网址。

答案 4 :(得分:0)

我认为您应该启用您网站的Anonymous Authentication以及Forms Authentication

IIS上选择您的应用,然后在功能视图中选择身份验证。