Domanda

Ho un servizio WCF che viene chiamato dal JavaScript lato client.La chiamata fallisce con un errore JavaScript del servizio nullo.La traccia dell'helper WebDevelopment mostra che le chiamate per caricare il file di supporto jsdebug generano un errore 404 (file non trovato).

Il riavvio di IIS o la cancellazione dei file Temp ASP.Net o l'impostazione batch="false" sul tag di compilazione in web.config non risolve il problema

Dal navigatore

https://Myserver/MyApp/Services/MyService.svc visualizza i metadati del servizio

Tuttavia

https://Myserver/MyApp/Services/MyService.svc/jsdebug il risultato è 404.

Il problema sembra riguardare il protocollo https.Con http /jsdebug scarica il file JS di supporto.

Qualche idea?

TIA

È stato utile?

Soluzione

Capito!

Ecco la sezione di configurazione dei servizi da web.config

Osserva l'attributo bindConfiguration sull'endpoint.Il valore "webBinding" punta al tag di associazione name="webBinding" nei collegamenti e questo è ciò che indica al servizio di utilizzare la sicurezza a livello di trasporto su HTTPS.Nel mio caso il valore dell'attributo era vuoto causando il fallimento della richiesta del servizio web al file /js o /jsdebug su HTTPS e la generazione di un errore 404.

<services>
      <service name="MyService">
        <endpoint address="" behaviorConfiguration="MyServiceAspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" contract="Services.MyService" />
      </service>
    </services>
    <bindings>
      <webHttpBinding>
        <binding name="webBinding">
          <security mode="Transport">
          </security>
        </binding>
      </webHttpBinding>
    </bindings>

Tieni presente che l'attributo bindConfiguration deve essere vuoto ("") se si accede al servizio tramite http anziché https (durante il test su un computer locale senza certificati)

Spero che questo aiuti qualcuno.

Altri suggerimenti

Se ricevi ancora lo stesso errore dopo aver svolto tutto il possibile lavoro.Basta aggiungere un "servizio WCF abilitato AJAX".

Per me il problema era il seguente;abbiamo aggiunto MVC a una soluzione con routing.I nostri servizi WCF non sono stati ignorati.Ho risolto questo problema aggiungendo la seguente regola (dove "WCF" è la cartella in cui conserviamo i nostri servizi).

routes.IgnoreRoute("WCF/{*pathInfo}");

Spero che questo faccia risparmiare a qualcuno qualche ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top