Спасибо - я добавляю этот файл в корень рядом с

очень большой и сложный веб-сайт MVC2. Мы хотим добавить API для некоторых внутренних инструментов и решили использовать WCF.

В идеале мы хотим, чтобы MVC сам размещал службу WCF. Причины включают в себя:

Несмотря на то, что приложение имеет несколько уровней, для некоторых функций, которые нам нужны в API, необходим сам сайт (например, форматирование электронных писем).Мы используем TFS для автоматической сборки (непрерывная интеграция) и развертывания - чем меньше нам нужно изменить механизм сборки и выпуска, тем лучшеМы используем контейнер Unity и Inversion of Control во всем приложении. Участие в веб-сайте позволит нам повторно использовать классы конфигурации и другие вспомогательные методы.

Я написал собственный ServiceBehavior, который, в свою очередь, имеет собственный InstanceProvider - это позволяет мне создавать экземпляры и настраивать контейнер, который затем используется для обслуживания всех запросов на экземпляры классов из WCF.

Итак, мой вопрос: Можно ли разместить службу WCF внутри самого MVC?

У меня был только опыт работы с сайтами Services / Standard Asp.Net и я не знал, что MVC2 может отличаться, пока я не попытался подключить его к конфигурации иничего не произошло, После некоторого поиска в Google, кажется, не так много упоминаний о том, как это сделать, - подумал я здесь.

Подробнее:

Спасибо тем из вас, кто ответил, но у меня все еще есть проблемы с этим ... Мой текущий конфиг выглядит так:

<system.serviceModel>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"
                               aspNetCompatibilityEnabled="true">
        <serviceActivations>
            <add relativeAddress="Job.svc"
                 service="MyApplication.WebJobManager"
                 factory="System.ServiceModel.Activation.WebServiceHostFactory" />
        </serviceActivations>
    </serviceHostingEnvironment>
    <extensions>
        <behaviorExtensions>
            <add name="WCFDIBehavior" type="MyApplication.Jobs.WCFDIBehaviorExtension, MyApplication.Jobs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        </behaviorExtensions>
    </extensions>
    <standardEndpoints>
        <mexEndpoint>
            <standardEndpoint name="WebJobManagerMex" />
        </mexEndpoint>
    </standardEndpoints>
    <behaviors>
        <serviceBehaviors>
            <behavior name="JobServiceBehavior">
                <serviceMetadata />
                <WCFDIBehavior />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="" name="MyApplication.Jobs.WebJobManager">
            <endpoint binding="basicHttpBinding"
              bindingConfiguration="" name="HTTPEndpoint" contract="MyApplication.JobService.Interfaces.IWebJobManager" />
        </service>
    </services>
</system.serviceModel>

Может кто-нибудь сказать мне, если что-то выглядит явно не так?

Я ожидал найти конечную точку вhttp://localhost/MyApplication/Job.svc и метаданные вhttp://localhost/MyApplication/Job.svc?mex однако оба дают 404. Насколько я могу судить, нет никаких явных признаков того, что WCF работает вообще. Возможно, мне нужно что-то сделать с моими маршрутами?

NB: В случае, если у других есть эта проблема, я должен был добавитьroutes.IgnoreRoute("{MyJob}.svc/{*pathInfo}") в настройку Route вGlobal.asax для предотвращения перехвата вызова MVC.

Ответы на вопрос(2)

Ваш ответ на вопрос