Карта структуры asp mvc 2 не работает при развертывании - PullRequest
1 голос
/ 01 марта 2010

Я использую карту структуры на своем сайте asp mvc, которую я только что попытался развернуть на II6 в первый раз.

Базовая структура зависимостей очень типична:

    public ControlMController(IControlMService controlMservice)
    {
        this._controlMservice = controlMservice;
    }

    ...

    public ControlMService(IControlMRepository repo)
    {
        this._repo = repo;
    }

    ...

    public SQLControlMRepository (CTRLMDataContext dataContext)
    {
        _db = dataContext;
    }

Моя структура RegistryMap выглядит так

        For<IControlMService>().Use<ControlMService>();
        For<IControlMRepository>().Use<SQLControlMRepository>();
        //For<IControlMRepository>().Use<TestControlMRepository>();
        SelectConstructor<CTRLMDataContext>(() => new CTRLMDataContext());
        For<CTRLMDataContext>().LifecycleIs(new HybridLifecycle()).Use<CTRLMDataContext>();

Моя фабрика контроллеров выглядит так:

public class ControllerFactory : DefaultControllerFactory 
{
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        try
        {
            if (controllerType == null) return base.GetControllerInstance(requestContext,controllerType);
            return ObjectFactory.GetInstance(controllerType) as IController;
        }
        catch
        {
            System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
            return null;
        }
    }
}

Это работает на сервере разработки на 100%, но не работает при развертывании на IIS 6 на сервере.

ControlMController, имеющий все зависимости, возвращает следующее исключение:

[InvalidOperationException: The IControllerFactory 'SupportTool.web.Controllers.ControllerFactory' did not return a controller for the name 'ControlM'.]
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContextBase httpContext) +304
   System.Web.Mvc.MvcHandler.ProcessRequest(HttpContext httpContext) +54
   System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext httpContext) +7
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

Все остальные контроллеры, имеющие 0 зависимостей, отлично работают на сервере, поэтому установка structmap должна работать немного, но не полностью: /

1 Ответ

3 голосов
/ 02 марта 2010

Самостоятельный ответ!

Проблема заключалась в том, что конструктор моего datacontext выдавал, потому что имя домена базы данных не было полностью определено, и пока мой компьютер разрешал его, сервер не смог.

Внутреннее исключение, содержащее информацию, не отображалось на странице ошибки!

:)

...