asp.net-mvc – ASP MVC.NET3本地IIS7对象引用错误

在开发mvc Web应用程序期间,我正在鼓励运行本地站点实例的问题.当我尝试重新加载页面时,在第一次加载成功后,我看到了以下错误.如果我通过VS虚拟服务器运行该站点,则没有问题.我的应用程序池正在以集成模式运行,它正在运行.net 4.知道为什么会这样吗?这个信息足够吗?

[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.HttpServerVarsCollection.Get(String name) +109
System.Web.Mvc.UrlRewriterHelper.WasThisRequestRewritten(HttpContextBase httpContext) +59
System.Web.Mvc.PathHelpers.GenerateClientUrlInternal(HttpContextBase httpContext,String contentPath) +213
System.Web.Mvc.PathHelpers.GenerateClientUrlInternal(HttpContextBase httpContext,String contentPath) +168
System.Web.Mvc.PathHelpers.GenerateClientUrl(HttpContextBase httpContext,String contentPath) +148
LeadManager.Web.UI.Helpers.MenuHelper.GenerateUrl(String url) in C:\Development\Hg\LeadManager\Web.UI\Helpers\MenuHelper.cs:1132
LeadManager.Web.UI.Helpers.MenuHelper.BuildLeadManagementMenu(Menu navMenu,Agent agent) in C:\Development\Hg\LeadManager\Web.UI\Helpers\MenuHelper.cs:554
LeadManager.Web.UI.Helpers.MenuHelper.AddNavMenu(Agent agent) in C:\Development\Hg\LeadManager\Web.UI\Helpers\MenuHelper.cs:530
ASP._Page_Views_Shared__Layout_cshtml.Execute() in c:\Development\Hg\LeadManager\Web\Views\Shared_Layout.cshtml:115
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +279
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +103
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext,TextWriter writer,WebPageRenderingBase startPage) +172
System.Web.WebPages.WebPageBase.Write(HelperResult result) +88
System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName,Action1 body) +233
System.Web.WebPages.WebPageBase.PopContext() +233
System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +377
System.Web.Mvc.<>c__displayClass1c.<InvokeActionResultWithFilters>b__19() +32
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter,ResultExecutingContext preContext,Func
1 continuation) +748196
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter,Func1 continuation) +748196
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList
1 filters,ActionResult actionResult) +265
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,String actionName) +748160
System.Web.Mvc.Controller.ExecuteCore() +159
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +334
System.Web.Mvc.<>c_displayClassb.b_5() +62
System.Web.Mvc.Async.<>c_displayClass1.b_0() +15
System.Web.Mvc.<>c_displayClasse.b_d() +52
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +437
System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously) +354

MenuHelper用于构建导航菜单.失败的代码是if之外的return语句:

private static string GenerateUrl(string url)
{
    if (instance == null)
    {
        // hack to enable using this on old web forms pages
        return UrlHelper.GenerateContentUrl(url,new HttpContextwrapper(HttpContext.Current));
    }
    return (new UrlHelper(instance.htmlHelper.ViewContext.RequestContext)).Content(url);
}

private static string GenerateUrl(string actionName,string controllerName)
{
    if (instance == null)
    {
        // hack to enable using this on old web forms pages
        return GenerateUrl(String.Format("{0}/{1}",controllerName,actionName));
    }

    if (instance.htmlHelper == null)
        throw new InvalidOperationException("htmlHelper has not been populated.");
    if (instance.htmlHelper.ViewContext == null)
        throw new InvalidOperationException("ViewContext has not been populated.");
    if (instance.htmlHelper.ViewContext.RequestContext == null)
        throw new InvalidOperationException("RequestContext has not been populated.");

    UrlHelper urlHelper = new UrlHelper(instance.htmlHelper.ViewContext.RequestContext);
    if (urlHelper == null)
        throw new InvalidOperationException("UrlHelper has not been populated.");

    if (String.IsNullOrEmpty(actionName))
        throw new InvalidOperationException("actionName has not been populated.");
    if (String.IsNullOrEmpty(controllerName))
        throw new InvalidOperationException("controllerName has not been populated.");

    return (urlHelper.Action(actionName,controllerName));
}

解决方法

我发现了这个问题,它是IIS7 URL重写模块.我不知道为什么或如何,但我通过卸载解决了这个问题.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....