【问题标题】:My app keeps me redirecting to Account/LogOn?ReturnUrl=%2f我的应用程序让我重定向到 Account/LogOn?ReturnUrl=%2f
【发布时间】:2011-08-01 20:30:19
【问题描述】:

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

显示的错误消息如下。刷新页面后,应用程序运行良好。如果我在一段时间内不访问该应用程序,则会再次出现错误。 有什么想法吗?

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

找不到资源。

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

请求的 URL:/Account/LogOn

【问题讨论】:

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


    【解决方案1】:

    这是相当普遍的。对于资源样式表等,通常是不使用@Content.Url 的结果。我的猜测是,对于其他问题,您可能正在对链接进行硬编码,而不是使用 @Url.Action。这也是常见的,我遇到过很多次了。

    实际上,基本上在开发环境中,您并不真正关心虚拟目录——但在生产环境中,这更像是一个问题。

    我认为 /Account/Login 在使用 IIS IIS 时指向根目录,您希望通过虚拟目录指向此路由。如果链接是通过 之类的东西生成的,那么你很好。但是如果你有一些 javascript 并且你正在调用一个 URL,或者如果你硬编码你的链接到 /MyController/MyList 那么它就不会找到它。

    与 css 文件相同。如果您查看在创建新项目时如何访问 Site.css 文件,您会看到如下内容:

    等等..等等..

    让我知道这是否有意义。

    【讨论】:

    • 第一次访问页面怎么样?当我在浏览器中键入主页 URL 时。它询问我的凭据,然后将我重定向到该错误页面
    • 这似乎是某种 IIS 配置.. 不是吗?
    • 我就是这么想的。不知道去哪里看
    【解决方案2】:

    解决方案是在 IIS 中禁用表单身份验证。

    【讨论】:

    • 这不是一个解决方案,它是一种解决方法,但代价是无法使用表单身份验证(不是一个巨大的损失,但仍然是 hackish)。有关实际解决方案,请参阅stackoverflow.com/a/6304624/120990
    • 谢谢达斯汀。但是,第一个解决方案对我有用,因为我使用 AD 进行身份验证。我在一个企业环境中,所有身份验证都由 AD 控制。
    • 它对您有用,但它不是原始问题的正确“解决方案”。由于我不得不四处寻找答案,我只是认为其他人可能会从链接中受益:) 干杯!
    【解决方案3】:

    您可能会看到这种情况,因为您的 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>
    

    【讨论】:

      【解决方案4】:

      就像 ek_ny 所说,这是一个非常普遍的问题。您应该为您的应用程序在全球范围内创建这两个变量。

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

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

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

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

      现在您可以将它用于需要从根路径引用的所有 url。

      【讨论】:

        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-11-22
          • 2012-01-02
          • 1970-01-01
          • 2016-12-09
          • 1970-01-01
          • 2018-03-04
          • 1970-01-01
          相关资源
          最近更新 更多