Host WCF no site MVC2

Temos um site MVC2 muito grande e complexo. Queremos adicionar uma API para algumas ferramentas internas e decidimos usar o WCF.

Idealmente, queremos que o próprio MVC hospede o serviço WCF. Os motivos incluem:

Embora haja várias camadas no aplicativo, algumas funcionalidades que gostaríamos na API exigem o próprio site (por exemplo, formatação de e-mails).Usamos o TFS para criar automaticamente (integração contínua) e implantar - Quanto menos precisarmos modificar o mecanismo de compilação e liberação, melhorUsamos o contêiner Unity e a Inversão de controle em todo o aplicativo. Fazer parte do site nos permitiria reutilizar classes de configuração e outros métodos auxiliares.

Eu escrevi um ServiceBehavior personalizado que, por sua vez, possui um InstanceProvider personalizado - Isso permite instanciar e configurar um contêiner que é usado para atender a todas as solicitações de instâncias de classe do WCF.

Então, minha pergunta é; É possível hospedar um serviço WCF a partir do próprio MVC?

Eu só tinha experiência em sites Services / Standard Asp.Net antes e não percebi que o MVC2 poderia ser diferente até que eu tentei conectá-lo à configuração enada aconteceu. Depois de pesquisar no Google, parece não haver muitas referências a fazer isso - então pensei em perguntar aqui.

Mais detalhes:

Obrigado a vocês que responderam, mas ainda estou tendo problemas para fazer isso funcionar ... Minha configuração atual é assim:

<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>

Alguém pode me dizer se algo parece obviamente errado?

Eu esperava encontrar o ponto final emhttp://localhost/MyApplication/Job.svc e metadados emhttp://localhost/MyApplication/Job.svc?mex no entanto, ambos dão 404 - Até onde eu sei, não há sinal óbvio de que o WCF esteja em execução. Talvez eu precise fazer algo nas minhas rotas?

NB: Caso outras pessoas tenham esse problema, tive que adicionarroutes.IgnoreRoute("{MyJob}.svc/{*pathInfo}") para a configuração da rota emGlobal.asax para impedir que o MVC intercepte a chamada.

questionAnswers(2)

yourAnswerToTheQuestion