ASP.NEt MVC 2 ошибка приложения на IIS7 отлично работает на локальной машине - PullRequest
0 голосов
/ 23 декабря 2010

Приложение ASP.NET MVC2 разработано с использованием 1. VS 2010 2. Linq To SQL для моделей

Вот код контроллера вызовов:

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

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

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

Ошибка в 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

Код в Global.asax:

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

Любое предложение может помочь.

1 Ответ

0 голосов
/ 23 декабря 2010

Нет необходимости использовать «Бедный человек», когда у вас нет интерфейса.

Просто сделайте так, чтобы ваш код выглядел так:

public class CallController : Controller
    {
        private readonly CallTrackRepository _repository;

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

Это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...