Usuário com melhor resposta
Como definir manualmente o endereço dos schemas em um WSDL do WCF?

Pergunta
-
Bom dia a todos,
Existe alguma forma de manipular os endereços que o WCF gera no WSDL para os schemas? Reparei que toda vez que publico um serviço WCF o WSDL gerado coloca as referências de endereço para os schemas (e subsequentes arquivos - XSD, por exemplo) com um endereço local.
Exemplo (hipotétco). Se eu tenho o serviço publicado no endereço http://200.8.3.4:8092/checklist.svc?wsdl, o WSDL gerado coloca o endereço http://servidor.dominio.local:8092/checklist.svc?wsdl, conforme exemplo abaixo.
<
wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://servidor.dominio.local:8092/CheckList.svc?xsd=xsd0"
namespace=http://tempuri.org/ />
<xsd:import schemaLocation="http://servidor.dominio.local:8092/CheckList.svc?xsd=xsd1"
namespace=http://schemas.microsoft.com/2003/10/Serialization/ />
<xsd:import schemaLocation=http://servidor.dominio.local:8092/CheckList.svc?xsd=xsd2
namespace=http://schemas.datacontract.org/2004/07/Empresa.Sistema.Services.Entities />
</xsd:schema>
</wsdl:types>Cheguei a pesquisar alguma coisa sobre "flatten WSDL", mas o que encontrei não funciona, ou então gera um arquivo único para o WSDL. Existem alguma forma de forçar essa configuração pelo WCF, ou de resolver esse problema de uma forma elegante?
Agradeço, antecipadamente, qualquer apoio.
Abraços!
Leandro Daniel
Respostas
-
Galera, achei dois posts muito interessantes do Israel Aece sobre essa questão:
http://www.israelaece.com/post/WSDL-com-nome-da-maquina.aspx
e
http://www.israelaece.com/post/Diferentes-HostHeaders-no-IIS.aspx
No meu cenário, de IIS 6 e .NET Framework 3.5 SP1, tentei utilizar o exemplo do segundo link. Contudo, estou com o seguinte erro:
"Não foi possível localizar um endereço base que corresponda ao esquema http para o ponto de extremidade com ligação WSHttpBinding. Os esquemas de endereços base são []. "
Alguma sugestão?
Abraços e obrigado!
Leandro Daniel
- Marcado como Resposta Leandro Daniel sexta-feira, 3 de setembro de 2010 01:14
-
Boas Daniel,
Já tentou entrar nas propriedades do diretório virtual no IIS, aba Web Site, IP Address, e em seguida, adicionar um host-header com o mesmo nome/porta que está mencionando no elemento baseAddressPrefixFilters?
http://www.israelaece.com- Marcado como Resposta Israel AeceModerator quinta-feira, 2 de setembro de 2010 20:33
Todas as Respostas
-
Galera, achei dois posts muito interessantes do Israel Aece sobre essa questão:
http://www.israelaece.com/post/WSDL-com-nome-da-maquina.aspx
e
http://www.israelaece.com/post/Diferentes-HostHeaders-no-IIS.aspx
No meu cenário, de IIS 6 e .NET Framework 3.5 SP1, tentei utilizar o exemplo do segundo link. Contudo, estou com o seguinte erro:
"Não foi possível localizar um endereço base que corresponda ao esquema http para o ponto de extremidade com ligação WSHttpBinding. Os esquemas de endereços base são []. "
Alguma sugestão?
Abraços e obrigado!
Leandro Daniel
- Marcado como Resposta Leandro Daniel sexta-feira, 3 de setembro de 2010 01:14
-
Boas Daniel,
Já tentou entrar nas propriedades do diretório virtual no IIS, aba Web Site, IP Address, e em seguida, adicionar um host-header com o mesmo nome/porta que está mencionando no elemento baseAddressPrefixFilters?
http://www.israelaece.com- Marcado como Resposta Israel AeceModerator quinta-feira, 2 de setembro de 2010 20:33
-
Fala Israel, tudo bem?
Mais uma vez, na mosca! Era isso que estava faltando.
Obrigado e abraços!
Leandro Daniel
http://reverb.leandrodaniel.com -
Senhores estou com o mesmo problema, mas no meu caso tenho algumas particularidades...
Bom a porta no IIS é a 80.
Para acessar o serviço WCF utilizado outra porta e no meu firewall faço um nat para a porta 80, ex:http://999.999.999.999:8081/ServicoWCF/Service.svc
No meu ambiente tenho IIS 6.0 e a aplicação WCF utiliza o Framework 3.5. No caso tentei fazer o seguinte:
No host header coloquei 999.999.999.999e no webconfig fiz conforme abaixo:
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="999.999.999.999"/>
</baseAddressPrefixFilters>
</serviceHostingEnvironment>quando vou tentar acessar o Serviço recebo o erro abaixo:
Bad Request (Invalid Hostname)
Já tentei alterar a porta no Host header para a mesma que uso no endereço externo e parece que nem chega no servidor... tentei colocar a porta no webconfig e também não deu certo...
Qual seria a configuração correta no meu caso???
Agradeço desde já....