简体   繁体   English

IIS7上的ASP.NEt MVC 2应用程序错误在本地计算机上正常运行

[英]ASP.NEt MVC 2 application error on IIS7 works fine on local machine

My ASP.NET MVC2 application is developed using 1. VS 2010 2. Linq To SQL for Models 我的ASP.NET MVC2应用程序是使用1. VS 2010开发的。LinqTo SQL for Models

Here is Call controller code: 这是呼叫控制器代码:

namespace CallTrackMVC.Controllers
{
    public class CallController : Controller
    {
        private CallTrackRepository repository;

        public CallController():this(new CallTrackRepository())
        {
        }

        public CallController(CallTrackRepository newRepository)
        {
            repository = newRepository;
        }
}
}

Error on IIS7 when browsing the Call Create page is 浏览“呼叫创建”页面时,IIS7上的错误为

NullReferenceException: Object reference not set to an instance of an object.]
   CallTrackMVC.Models.ExecOfficeDataContext..ctor() in C:\ClearCase\rartadi_view\STS_Dev_TEST\CallTrackMVC\Models\ExecOffice.designer.cs:71
   CallTrackMVC.Controllers.CallController..ctor() in C:\ClearCase\rartadi_view\STS_Dev_TEST\CallTrackMVC\Controllers\CallController.cs:16

[TargetInvocationException: Exception has been thrown by the target of an invocation.]
   System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
   System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +117
   System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +247
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +106
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +102

[InvalidOperationException: **An error occurred when trying to create a controller of type 'CallTrackMVC.Controllers.CallController'. Make sure that the controller has a parameterless public constructor.**]
   System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +541
   System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +85
   System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory) +165
   System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +80
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +389
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +371

Code in Global.asax is Global.asax中的代码是

 protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
    }

Any suggestion would be a great help. 任何建议都会有很大帮助。

There is no need to use "Poor Man's DI" when you have no interface. 没有界面时,无需使用“穷人DI”。

Just make your code look like this: 只需使您的代码看起来像这样:

public class CallController : Controller
    {
        private readonly CallTrackRepository _repository;

        public CallController()
        {
            _repository= new CallTrackRepository();
        }
}

This should solve your problem. 这应该可以解决您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM