Asp.net 具有MVC成员身份(OpenID)控制器的ASP MVC空引用异常

Asp.net 具有MVC成员身份(OpenID)控制器的ASP MVC空引用异常,asp.net,asp.net-mvc,asp.net-membership,Asp.net,Asp.net Mvc,Asp.net Membership,我要提前道歉。我是ASP.NET和MVC的新手,还不熟悉操作的内部结构和流程。我正在尝试将该工具包集成到我正在开发的站点中,以获得OpenID支持 我已经解决了好几个问题,但是我一直在寻找一个空引用异常,这让我感到困惑。以下是流程: 用户单击页面上的“登录” MVC MembershipAdministrationController已正确启动。它检测到当前没有登录的用户,因此使用登录表单(login.aspx)进行响应 呈现此表单时引发空引用异常。具体而言,引发异常的部分是: <% us

我要提前道歉。我是ASP.NET和MVC的新手,还不熟悉操作的内部结构和流程。我正在尝试将该工具包集成到我正在开发的站点中,以获得OpenID支持

我已经解决了好几个问题,但是我一直在寻找一个空引用异常,这让我感到困惑。以下是流程:

  • 用户单击页面上的“登录”
  • MVC MembershipAdministrationController已正确启动。它检测到当前没有登录的用户,因此使用登录表单(login.aspx)进行响应
  • 呈现此表单时引发空引用异常。具体而言,引发异常的部分是:

    <% using(Html.Form( "OpenID", "Login" )){ %>
      <fieldset class="MvcMembership">
        <legend>Login</legend>
        <div><label for="openid_identifier">OpenID Url:</label> <% =Html.TextBox( "openid_identifier" )%></div>
        <div><% =Html.SubmitButton( "submit", "Login", new { onclick = "return starterKit_mvc_membership_validateOpenIdLogin();" } )%></div>
      </fieldset>
    <% } %>
    
    
    登录
    OpenID Url:
    
  • 对Html.Form(“OpenID”、“Login”)的调用是引发异常的调用。以下是调用堆栈:

    System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.NullReferenceException: Object reference not set to an instance of an object.
       at System.Collections.Generic.Dictionary`2.Enumerator.MoveNext()
       at System.Web.Routing.ParsedRoute.Bind(RouteValueDictionary currentValues, RouteValueDictionary values, RouteValueDictionary defaultValues, RouteValueDictionary constraints)
       at System.Web.Routing.Route.GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
       at System.Web.Routing.RouteCollection.GetVirtualPath(RequestContext requestContext, RouteValueDictionary values)
       at Microsoft.Web.Mvc.FormExtensions.Form(HtmlHelper helper, String controllerName, String actionName, FormMethod method, IDictionary`2 htmlAttributes)
       at Microsoft.Web.Mvc.FormExtensions.Form(HtmlHelper helper, String controllerName, String actionName)
       at ASP.views_openid_login_aspx.__RenderopenIdLoginContent(HtmlTextWriter __w, Control parameterContainer) in d:\Data\Personal\purplemartin.tv\mvc\MvcMembership\Views\OpenID\Login.aspx:line 15
       at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
       at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
       at System.Web.UI.Control.Render(HtmlTextWriter writer)
       at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
       at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
       at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
       at ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in d:\Data\Personal\purplemartin.tv\mvc\MvcMembership\Views\Shared\Site.Master:line 46
       at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
       at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
       at System.Web.UI.Control.Render(HtmlTextWriter writer)
       at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
       at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
       at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
       at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
       at System.Web.UI.Control.RenderChildren(HtmlTextWriter writer)
       at System.Web.UI.Page.Render(HtmlTextWriter writer)
       at System.Web.Mvc.ViewPage.Render(HtmlTextWriter writer)
       at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
       at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
       at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       --- End of inner exception stack trace ---
       at System.Web.UI.Page.HandleError(Exception e)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       at System.Web.UI.Page.ProcessRequest()
       at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
       at System.Web.UI.Page.ProcessRequest(HttpContext context)
       at ASP.views_openid_login_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\cada2385\9a6742fc\App_Web_zl9plrr2.1.cs:line 0
       at System.Web.Mvc.ViewPage.RenderView(ViewContext viewContext)
       at System.Web.Mvc.WebFormView.RenderViewPage(ViewContext context, ViewPage page)
       at System.Web.Mvc.WebFormView.Render(ViewContext viewContext, TextWriter writer)
       at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass11.<InvokeActionResultWithFilters>b__e()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass11.<>c__DisplayClass13.<InvokeActionResultWithFilters>b__10()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
       at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
       at System.Web.Mvc.Controller.ExecuteCore()
       at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
       at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
       at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext)
       at System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext)
       at System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext)
       at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
    
    System.Web.HttpUnhandledException:引发了类型为“System.Web.HttpUnhandledException”的异常。-->System.NullReferenceException:对象引用未设置为对象的实例。
    位于System.Collections.Generic.Dictionary`2.Enumerator.MoveNext()
    位于System.Web.Routing.ParsedLote.Bind(RouteValueDictionary当前值、RouteValueDictionary值、RouteValueDictionary默认值、RouteValueDictionary约束)
    位于System.Web.Routing.Route.GetVirtualPath(RequestContext RequestContext,RouteValueDictionary值)
    位于System.Web.Routing.RouteCollection.GetVirtualPath(RequestContext RequestContext,RouteValueDictionary值)
    在Microsoft.Web.Mvc.FormExtensions.Form(HtmlHelper帮助程序、字符串控制器名、字符串操作名、FormMethod方法、IDictionary`2 htmlAttributes)
    在Microsoft.Web.Mvc.FormExtensions.Form(HtmlHelper帮助程序、字符串控制器名、字符串操作名)
    在d:\Data\Personal\purplemartin.tv\mvc\MvcMembership\views\openid\login\aspx.\uuu renderropeindlogincontent(HtmlTextWriter\uuw,Control parameterContainer)中的ASP.views\uOpenID\login\ux.aspx:第15行
    位于System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter编写器,ICollection子对象)
    位于System.Web.UI.Control.RenderChildren(HtmlTextWriter)
    在System.Web.UI.Control.Render(HtmlTextWriter)上
    位于System.Web.UI.Control.RenderControlInternal(HtmlTextWriter编写器、ControlAdapter适配器)
    位于System.Web.UI.Control.RenderControl(HtmlTextWriter编写器、控制适配器)
    位于System.Web.UI.Control.RenderControl(HtmlTextWriter)
    在ASP.views\U shared\U site\U master.\U呈现\U控制1(HtmlTextWriter\U w,控制参数容器),位于d:\Data\Personal\purplemartin.tv\mvc\MvcMembership\views\shared\site.master:第46行
    位于System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter编写器,ICollection子对象)
    位于System.Web.UI.Control.RenderChildren(HtmlTextWriter)
    在System.Web.UI.Control.Render(HtmlTextWriter)上
    位于System.Web.UI.Control.RenderControlInternal(HtmlTextWriter编写器、ControlAdapter适配器)
    位于System.Web.UI.Control.RenderControl(HtmlTextWriter编写器、控制适配器)
    位于System.Web.UI.Control.RenderControl(HtmlTextWriter)
    位于System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter编写器,ICollection子对象)
    位于System.Web.UI.Control.RenderChildren(HtmlTextWriter)
    在System.Web.UI.Page.Render(HtmlTextWriter)
    在System.Web.Mvc.ViewPage.Render(HtmlTextWriter)上
    位于System.Web.UI.Control.RenderControlInternal(HtmlTextWriter编写器、ControlAdapter适配器)
    位于System.Web.UI.Control.RenderControl(HtmlTextWriter编写器、控制适配器)
    位于System.Web.UI.Control.RenderControl(HtmlTextWriter)
    在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
    ---内部异常堆栈跟踪的结束---
    位于System.Web.UI.Page.HandleError(异常e)
    在System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
    在System.Web.UI.Page.ProcessRequest(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)
    在System.Web.UI.Page.ProcessRequest()中
    位于System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext上下文)
    在System.Web.UI.Page.ProcessRequest(HttpContext上下文)中
    在c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\cada2385\9A6742C\App\U Web\U zl9plrr2.1.cs中的ASP.views\U openid\U login\U aspx.ProcessRequest(HttpContext上下文):第0行
    在System.Web.Mvc.ViewPage.RenderView(ViewContext)中
    在System.Web.Mvc.WebFormView.RenderViewPage(ViewContext上下文,ViewPage)中
    在System.Web.Mvc.WebFormView.Render(ViewContext、TextWriter)上
    在System.Web.Mvc.ViewResultBase.ExecuteSult(ControllerContext上下文)中
    位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext ControllerContext,ActionResult ActionResult)
    在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass11.b_uue()中
    位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter筛选器、ResultExecutingContext预文本、Func`1 continuation)
    在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass11.c_uuDisplayClass13.b_uuu10()中
    位于System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext ControllerContext,IList`1 filters,ActionResult ActionResult)
    位于System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext ControllerContext,String actionName)
    在System.Web.Mvc.Controller.ExecuteCore()上
    在System.Web.Mvc.ControllerBase.Execute(RequestContext-RequestContext)中
    位于System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext RequestContext)
    在System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase-httpContext)中
    位于System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext-HttpContext)
    位于System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.Process
    
        [HandleError( ExceptionType = typeof(OpenIdException) )]
        [HandleError( ExceptionType = typeof(System.Net.WebException) )]
        public virtual ActionResult Login( string openid_identifier )
        {
            //### set page title & declare variables
            ViewData["Title"] = "Login via OpenID";
            var errors = new List<string>();
            var rememberMe = false;
            var openid = new OpenIdRelyingParty();
    
            //### stage 1: display login form to user
            if( openid.Response == null && Request.HttpMethod != "POST" )
                return View();
    
    public static MvcForm BeginForm<TController>(this HtmlHelper helper, Expression<Action<TController>> action) where TController: Controller;
    public static MvcForm BeginForm<TController>(this HtmlHelper helper, Expression<Action<TController>> action, FormMethod method) where TController: Controller;
    public static MvcForm BeginForm<TController>(this HtmlHelper helper, Expression<Action<TController>> action, FormMethod method, IDictionary<string, object> htmlAttributes) where TController: Controller;
    public static MvcForm BeginForm<TController>(this HtmlHelper helper, Expression<Action<TController>> action, FormMethod method, object htmlAttributes) where TController: Controller;