Pergunta

Eu tenho um serviço WCF que as chamadas, através de um BL, uma camada de dados e, finalmente, back-end SQL Server. Meu serviço expõe vários métodos / operações para obter dados do banco de dados. I também construiu uma série para ele para testar, e um host de serviço do Windows, que é como eu planejo para implantá-lo.

Ontem, quando eu fiz um teste de implantação, o serviço começou bem, mas eu não tive a chance de ver se os dados foram puxando corretamente. Aqui está a coisa: Meu ambiente de teste de implantação (MS Server 2003) é totalmente diferente do que a minha própria (laptop) enviro teste local. I implantados copiando as bin \ conteúdo de depuração do projeto de serviço do Windows para o servidor e referenciando o .exe lá quando eu usei InstallUtil.exe. Mas a conexão de dados para a DL deve tomar uma seqüência de conexão diferente, obviamente, como deve ser a conexão com o banco de dados no servidor, não o meu laptop. No entanto, a única app.config vejo no diretório I implantado é o único para o host de serviço. Os outros projetos, como o DL e BL, também estão lá como DLL, mas não app.config é para qualquer um. Então, como posso substituir o app.config para o DL com o correto para que enviro? Tenho certeza de que este é um problema simples que eu simplesmente não estou cluing em diante.

A questão relacionada: Se decidir mais tarde que nós queremos usar um host HTTP em vez de - ou além de - TCP, eu posso correr um segundo host condução fora que mesmo serviço? Eu só preciso implantar o host com IIS e adicionar um nó de serviço para os app.configs?

Foi útil?

Solução

App.config para o ambiente de hospedagem, neste caso, o serviço gerenciado do Windows, contém a configuração para todos os seus módulos. Da mesma forma, Web.config contém todas as configurações se você hospedá-lo em IIS.

Outras dicas

Quando você implantar um projeto, a única app.config / web.config você vai conseguir é o que está em seu projeto executável (site / console app / serviço de janelas / app Windows Forms / etc. Projeto). Quaisquer app.configs para projetos DLL não será copiado para o diretório bin.

Você precisará copiar as seções de configuração a partir de seus projetos DLL e colocá-los em seu app.config projeto de serviço.

Para sua segunda pergunta, você pode hospedar diferentes terminais para o mesmo serviço na mesma ServiceHost. Você pode hospedar um HTTP ponto final em um aplicativo de serviço do Windows / console. Se você hospedar HTTP fora do IIS, você pode precisar de dar permissões para o usuário para permitir que ele abra uma porta HTTP. (Veja http://msdn.microsoft.com/en-us/library/ ms733768.aspx ). Para HTTP sua vida pode ser mais fácil hospedagem no IIS, mas ela não funciona em um ServiceHost simples.

<system.serviceModel>
    <services>
        <service name="MyServiceTypes.MyService">
            <endpoint address="http://localhost:44444/MyService"
                      binding="basicHttpBinding"
                      contract="MyServiceTypes.IMyService" />

            <endpoint address="net.tcp://localhost:55555/MyService"
                      binding="netTcpBinding"
                      contract="MyServiceTypes.IMyService" />
        </service>
    </services>
</system.serviceModel>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top