Хост службы WCF от IIS, spring.net scope = "request" - PullRequest
2 голосов
/ 20 октября 2011

Я хотел бы включить атрибут scope="request" в моей конфигурации xml:

<object id="IDataAccess" type="Dal.DataAccess, Dal" scope="request">

Моя служба WCF размещена на IIS, и я использую RouteTable и ServiceHostFactory для создания своей службы:

static void Application_Start(object sender, EventArgs e)
{
    RouteTable.Routes.Add(new ServiceRoute("url", serviceHostFactory, typeof(MyService)));
}

Я добавил WebContextHandler в свой web.config, чтобы включить область действия request и session, как описано здесь http://www.springframework.net/doc-latest/reference/html/web.htm (раздел 22.3.1)

<sectionGroup name="spring">
  <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>
</sectionGroup>

И httpModules вещь:

 <system.web>
    <httpHandlers>
        <add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>
    </httpHandlers>
    <httpModules>
        <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
    </httpModules>
</system.web>

И поскольку я нахожусь в окне 7, фреймворк Net 4.0 я также добавил:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
    </modules>
</system.webServer>

Я сделал все это. и это не работает, у меня все еще есть:

Resource handler for the 'web' protocol is not defined.

когда он звонит:

SpringContext = (IApplicationContext)ConfigurationManager.GetSection("spring/context");

Не знаю, что мне теперь делать, может ли кто-нибудь из сообщества Spring.net помочь мне. Не похоже, что я пытаюсь сделать что-то хитрое или хакерское. Это общая схема размещения службы WCF в IIS.

EDIT

Я пытался с

<add verb="*" path="*" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>

, как предлагается в комментариях, и это не работает.

1 Ответ

1 голос
/ 21 октября 2011

Я посмотрел бот на исходный код Spring, и если я добавлю

ResourceHandlerRegistry.RegisterResourceHandler("web", typeof (WebResource));

в моем методе Application_Start, до получения ContextConfiguration, он выполняет свою работу. Понятия не имею почему. Я думаю, что это ошибка в текущем WebSupportModule.

Это очень странно, потому что это вызывается в статическом конструкторе WebSupportModule. Я попытался включить ведение журнала для Spring, но файл журнала создан, но остался пустым: / это могло бы помочь мне немного больше понять.

...