Estou tentando criar um serviço WCF sobre basicHttpBinding para ser usado em https. Aqui está o meu web.config:
<!-- language: xml -->
<service behaviorConfiguration="MyServices.PingResultServiceBehavior"
name="MyServices.PingResultService">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="defaultBasicHttpBinding"
contract="MyServices.IPingResultService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
...
<bindings>
<basicHttpBinding>
<binding name="defaultBasicHttpBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
...
<behaviors>
<serviceBehaviors>
<behavior name="MyServices.UpdateServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Estou conectando usando o WCFStorm, capaz de recuperar todos os metadados corretamente, mas quando chamo o método real, obtenho:
O esquema de URI fornecido 'https' é inválido; esperado 'http'. Nome do parâmetro: via
Respostas:
Tente adicionar credenciais de mensagem no seu app.config como:
fonte
Adicionando isso como resposta, já que você não pode fazer muita formatação sofisticada nos comentários.
Eu tive o mesmo problema, exceto que estava criando e vinculando meu cliente de serviço da Web inteiramente no código.
O motivo é que a DLL estava sendo carregada em um sistema, o que proibia o uso de arquivos de configuração.
Aqui está o código que precisava ser atualizado para se comunicar via SSL ...
fonte
Alterar de
para
no seu arquivo web.config. Essa alteração permitirá que você use https em vez de http
fonte
Você está executando isso no Cassini (servidor vs dev) ou no IIS com um certificado instalado? No passado, tive problemas ao tentar conectar pontos de extremidade seguros no servidor da web dev.
Aqui está a configuração de ligação que funcionou para mim no passado. Em vez de
basicHttpBinding
, ele usawsHttpBinding
. Não sei se isso é um problema para você.e o ponto final
Além disso, altere a configuração do cliente para ativar a segurança de transporte.
fonte
Eu tive a mesma exceção em um
custom binding
cenário. Qualquer pessoa que use essa abordagem também pode verificar isso.Na verdade, eu estava adicionando a referência de serviço de um
local WSDL
arquivo. Foi adicionado com sucesso e a ligação personalizada necessária foi adicionada ao arquivo de configuração. No entanto, o serviço real era https; não é http. Então mudei o httpTransport elemet comohttpsTransport
. Isso corrigiu o problemaReferências
fonte
Eu tive exatamente o mesmo problema que o OP. Minha configuração e situação eram idênticas. Finalmente, reduzi-o a ser um problema no WCFStorm depois de criar uma referência de serviço em um projeto de teste no Visual Studio e confirmar que o serviço estava funcionando. No Storm, você precisa clicar na opção de configurações "Config" (NÃO NA "Configuração do Cliente"). Depois de clicar nisso, clique na guia "Segurança" na caixa de diálogo exibida. Verifique se "Tipo de autenticação" está definido como "Nenhum" (o padrão é "Autenticação do Windows"). Presto, funciona! Eu sempre testo meus métodos no WCFStorm enquanto os construo, mas nunca tentei usá-lo para conectar-me a um que já foi configurado no SSL. Espero que isso ajude alguém!
fonte
Deparamos com o mesmo problema, é assim que minha solução acabou no final:
Substituí basicamente todas as ocorrências de Http por Https. Você pode tentar adicionar os dois, se preferir.
fonte
Se você fizer isso programaticamente e não no web.config, será:
fonte
É bom lembrar que os arquivos de configuração podem ser divididos em arquivos secundários para facilitar as alterações de configuração em diferentes servidores (dev / demo / production etc), sem a necessidade de recompilar o código / aplicativo etc. faça alterações nos pontos de extremidade sem realmente tocar nos arquivos 'reais'.
O primeiro passo é mover a seção de ligações do WPF App.Config para seu próprio arquivo separado.
A seção de comportamentos está configurada para permitir http e https (não parece afetar o aplicativo se ambos forem permitidos)
E movemos a seção de ligações para seu próprio arquivo;
No arquivo bindings.config, alternamos a segurança com base no protocolo
Agora, os engenheiros no local só precisam alterar o arquivo Bindings.Config e o Client.Config onde armazenamos a URL real para cada nó de extremidade.
Dessa forma, podemos alterar o terminal de http para https e vice-versa para testar o aplicativo sem precisar alterar nenhum código.
Espero que isto ajude.
fonte
Para recapitular a pergunta no OP:
Os tutoriais do WCFStorm abordam esse problema em Trabalhando com IIS e SSL .
A solução deles funcionou para mim:
O item (1) último marcador em efeito significa remover o prefixo do namespace que o VS acrescenta ao atributo do contrato do nó de extremidade, por padrão "ServiceReference1"
portanto, no app.config que você carrega no WCFStorm que deseja para ListsService:
fonte
Eu precisava das seguintes ligações para fazer o meu funcionar:
fonte
wsHttpBinding é um problema porque o silverlight não suporta!
fonte