【问题标题】:Authenticate action unreachable OpenId ASP.Net MVC4身份验证操作无法访问 OpenId ASP.Net MVC4
【发布时间】:2012-01-31 18:19:35
【问题描述】:

我正在关注这个例子:OpenID Authentication with ASP.NET MVC3 , DotNetOpenAuth and OpenID-Selector

我开始了一个新的 MVC4 项目,并按照上面文章中的建议添加了 OpenId 代码。

无法访问 AccountController 中 Authenticate 操作的断点。

点击谷歌或雅虎将我带到这个空白页面:http://localhost:37638/Account/Authenticate?ReturnUrl=

【问题讨论】:

  • 我尝试在 MVC3 项目和我的 MVC4 项目之间切换文件(JS、CSS、_layout 和 web.config),仍然是相同的行为。
  • 在新的 MVC3 项目中可以看到相同的行为。这使我相信从上面的链接下载的示例项目中存在一些不同的设置。不过是哪一个?
  • 我使用 WINMerge 将我的 MVC3 项目与示例进行比较,但找不到任何可能导致这种奇怪行为的不同之处。
  • 'code' [Authorize] public class AccountController : Controller {'code' // 移除控制器类的 Authorize 属性使其工作。删除 Authorize 属性有什么后果?

标签: dotnetopenauth asp.net-mvc-4


【解决方案1】:

在黑暗中射击:您的 web.config 文件中是否有适当的 bindingRedirects 以便 MVC 1-3 重定向到 MVC 4?

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

【讨论】:

  • 是的,该项目是开箱即用的。全新项目,仅添加了 OpenId 所需的文件。
【解决方案2】:

删除控制器上的 Authorize 属性的另一种方法是将 AllowAnonymous 属性添加到操作中,这已经解决了我的问题。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2018-06-25
    • 2023-04-05
    • 2013-11-15
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多