Pergunta

O meu grupo constrói hospedados internamente sites ASP.NET MVC com formulários-autenticação.

Eu gostaria de hospedar um serviço WCF no mesmo diretório virtual como um site ASP.NET MVC.

Minha pergunta:

Como posso fazer o serviço WCF livremente acessíveis, isto é sem de autenticação de formulários.

A minha situação atual é esta:

  • posso acessar o .svc e veja as informações wsdl se eu primeiro autenticar através de autenticação de formulários com um navegador web.
  • Mas quando tento acessar o serviço WCF com wcfTestClient.exe, eu recebo o seguinte erro:

Erro: Não é possível obter Metadados http: //localhost/Services/MyService.svc Se este é um Windows (R) Comunicação serviço Fundação para o qual você tem acesso, verifique se você tem habilitado metadados publicação no endereço especificado. Para obter ajuda permitindo a publicação de metadados, consulte a documentação MSDN em http://go.microsoft.com/fwlink/?LinkId=65455. WS-Metadata Erro de câmbio

Foi útil?

Solução 3

Muito obrigado a todos que tentaram responder a essa pergunta.

Depois de horas de solucionar esse problema, eu descobri que um módulo de autenticação personalizada estava rejeitando as minhas tentativas cliente para obter os metadados. Basta dizer, eu precisava rota em torno essa lógica.

Oh - e percorrendo o código é muito subestimado . ;)

Outras dicas

Você tem uma mex endpoint definido no seu web.config para o serviço? O TestClient é provável olhando para isso.

Se você fizer isso, uma outra possibilidade é a de desativar autorização na pasta serviços. Eu nunca testei isso, mas, em teoria, pode funcionar ...

Então, se o site é localhost, coloque o serviço WCF em localhost/services/myservice.svc ou similar. Em seguida, adicionar um web.config para a pasta /services, que substitui a autorização e permite que todos:

<configuration>
   <authorization>
      <allow users="*" />
   </authorization>
</configuration>

Se você pode colocar seu arquivo .svc em uma subpasta do diretório virtual, você pode aproveitar o caminho atributo na autenticação de formulários para permitir o acesso a ele com um nível diferente de autorização. Aqui está um tutorial .

Eu assumo desde que você está usando autenticação de formulários que o diretório virtual está configurado para acesso anônimo no IIS. Com isso dito, se você colocar o seu serviço WCF por exemplo * Arquivo .svc em seu próprio diretório, você pode atualizar o arquivo web.config principal e adicionar uma marca local para desativar a autenticação de formulários para o diretório que contém o serviço. Também não se esqueça de segurança disbale via configurações na seção <system.servicemodel> do web.config ligação configuração WCF que precisa ser adicionado, se ainda não estiver presente:

<bindings>
  <wsHttpBinding>   <!-- one of many possible bindings -->
    <binding name="...">          
      <security mode="None"> <-- allows anonymous access -->
        <message clientCredentialType="None"/> <-- allows anonymous access -->
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top