C# 如何获得';内迪纳';OpenID弹出窗口工作

C# 如何获得';内迪纳';OpenID弹出窗口工作,c#,jquery,openid,nerddinner,C#,Jquery,Openid,Nerddinner,所以我试图以NerdDinner 2为例实现OpenID。当您单击其中一个OpenID提供程序时,会出现一个弹出窗口,如下面的屏幕截图所示。我已经正确地设置了大部分底层代码,并且我的登录页面加载并显示了三个提供者按钮,但是当我单击它们时,没有弹出窗口。它一点作用也没有。没有JS错误,只是什么都没发生。我错过了什么 我已经浏览了NerdDinner代码,但是我很难弄清楚到底是什么导致了弹出。我不一定需要有人告诉我我的应用程序出了什么问题,我只需要知道我在NerdDinner应用程序中寻找什么导致它

所以我试图以NerdDinner 2为例实现OpenID。当您单击其中一个OpenID提供程序时,会出现一个弹出窗口,如下面的屏幕截图所示。我已经正确地设置了大部分底层代码,并且我的登录页面加载并显示了三个提供者按钮,但是当我单击它们时,没有弹出窗口。它一点作用也没有。没有JS错误,只是什么都没发生。我错过了什么

我已经浏览了NerdDinner代码,但是我很难弄清楚到底是什么导致了弹出。我不一定需要有人告诉我我的应用程序出了什么问题,我只需要知道我在NerdDinner应用程序中寻找什么导致它发生,这样我就可以将它与我的进行比较

我使用以下代码渲染按钮:

@model dynamic
@using DotNetOpenAuth.Mvc;
@using DotNetOpenAuth.OpenId.RelyingParty;
<div id="login-oauth">
    <fieldset>
        <legend>via 3rd Party (recommended)</legend>
        @using (Html.BeginForm("LogOnPostAssertion", "Auth"))
        {
            @Html.Hidden("ReturnUrl", Request.QueryString["ReturnUrl"], new { id = "ReturnUrl" })
            @Html.Hidden("openid_openidAuthData")
            <div>
                @MvcHtmlString.Create(Html.OpenIdSelector(new SelectorButton[] {
new SelectorProviderButton("https://me.yahoo.com/", Url.Content("~/Content/images/yahoo.gif")),
new SelectorProviderButton("https://www.google.com/accounts/o8/id", Url.Content("~/Content/images/google.gif")),
new SelectorOpenIdButton(Url.Content("~/Content/images/openid.gif")),
}))
                <div class="helpDoc">
                    <p>
                        If you have logged in previously, click the same button you did last time!!
                    </p>
                </div>
            </div>
        }
    </fieldset>
</div>
@{     
    var options = new OpenIdSelector();
    options.TextBox.LogOnText = "Log On";
}
@MvcHtmlString.Create(Html.OpenIdSelectorScripts(options, null))
@模型动态
@使用DotNetOpenAuth.Mvc;
@使用DotNetOpenAuth.OpenId.RelyingParty;
通过第三方(推荐)
@使用(Html.BeginForm(“LogOnPostAssertion”、“Auth”))
{
@Hidden(“ReturnUrl”,Request.QueryString[“ReturnUrl”],new{id=“ReturnUrl”})
@Html.Hidden(“openid_openidAuthData”)
@MvcHtmlString.Create(Html.OpenIdSelector)(新建选择器按钮[]{
新建SelectorProviderButton(“https://me.yahoo.com/,Url.Content(“~/Content/images/yahoo.gif”),
新建SelectorProviderButton(“https://www.google.com/accounts/o8/id,Url.Content(“~/Content/images/google.gif”),
新的选择器打开按钮(Url.Content(“~/Content/images/openid.gif”),
}))

如果您以前登录过,请单击与上次相同的按钮!!

} @{ var options=new OpenIdSelector(); options.TextBox.LogOnText=“登录”; } @MvcHtmlString.Create(Html.openidselectorscript(选项,null))
编辑:这在所有浏览器中都会发生,并且没有弹出窗口阻止程序


出于某种原因,将global.asax.cs中的以下路由更改为:

routes.MapRoute(
    "OpenIdDiscover",
    "Auth/Discover");
致:


似乎已经解决了这个问题。不知道为什么,但使用Firebug查看请求时显示,尝试访问此路由时出现500个错误。

这可能是特定于浏览器的行为吗?我看到你在用Chrome。你在IE和FireFox中试过了吗?你打开了弹出窗口拦截器吗?对不起,我应该提到这一点。在所有浏览器中都会发生。而且,没有弹出窗口阻止程序。
routes.MapRoute(
    "OpenIdDiscover",
    "Auth/Discover",
    new { controller = "Auth", action = "Discover" }
);