Domanda

Il mio gruppo costruisce ospitato internamente ASP.NET MVC siti web con le forme-autenticazione.

mi piacerebbe ospitare un servizio WCF nella stessa directory virtuale come un sito web ASP.NET MVC.

La mia domanda:

  

Come faccio a fare il servizio WCF liberamente   accessibili, cioè senza   forme-autenticazione.

La mia situazione attuale è questa:

  • posso accedere al .svc e visualizzare le informazioni WSDL se prima l'autenticazione tramite moduli di autenticazione con un browser web.
  • Ma quando provo ad accedere al servizio WCF con wcfTestClient.exe, ottengo il seguente errore:
  

Errore: Impossibile ottenere i metadati da    http: //localhost/Services/MyService.svc   Se questo è un (R) Windows Communication   servizio di Fondazione a cui si ha   accesso, si prega di verificare di avere   permesso la pubblicazione dei metadati al   indirizzo specificato. Per informazioni permettendo   la pubblicazione dei metadati, fare riferimento alla   la documentazione MSDN all'indirizzo    http://go.microsoft.com/fwlink/?LinkId=65455. WS-Metadata   Errore di scambio

È stato utile?

Soluzione 3

Molte grazie a tutti coloro che hanno cercato di rispondere a questa domanda.

Dopo ore di risoluzione di questo problema, ho scoperto che un modulo di autenticazione personalizzato stava rifiutando il mio cliente tenta di ottenere i metadati. Basti dire, avevo bisogno di percorso intorno a questa logica.

Oh - e passando attraverso il codice è molto sottovalutato . ;)

Altri suggerimenti

Avete un mex endpoint definito nel web.config per il servizio? Il TestClient è probabile alla ricerca di questo.

Se lo fai, un'altra possibilità è quella di disabilitare autorizzazione sulla cartella Servizi. Non ho mai provato questo, ma in teoria potrebbe funzionare ...

Quindi, se il sito è localhost, messa in servizio WCF localhost/services/myservice.svc o simili. Quindi aggiungere un web.config nella cartella /services, che sostituisce l'autorizzazione e permette a tutti:

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

Se si può mettere il file .svc in una sottocartella della directory virtuale, è possibile sfruttare la path attributo autenticazione basata su form per consentire l'accesso ad essa con un diverso livello di autorizzazione. Ecco un tutorial .

Presumo dal momento che si sta utilizzando l'autenticazione forme che la directory virtuale è configurato per l'accesso anonimo in IIS. Detto questo, se si posiziona il servizio WCF per esempio * File .svc nella propria directory, è possibile aggiornare il file web.config principale e aggiungere un tag di percorso per disabilitare l'autenticazione moduli per la directory che contiene il servizio. Anche essere sicuri di disbale sicurezza attraverso la configurazione di WCF impostazioni nella sezione <system.servicemodel> del web.config vincolante che deve essere aggiunto, se non è già 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top