2009-06-22 8 views
50

Ho creato un servizio Web in .Net e quindi l'indirizzo del file di servizio ha una spiegazione geniale generata automaticamente su come funziona. Quando eseguo la pagina dalla macchina su cui è ospitata, è disponibile anche un modulo che è possibile utilizzare per inviare i valori di test al servizio. Tuttavia su macchine remote nasconde il modulo e dà il messaggio come visto sopra."Il modulo di test è disponibile solo per le richieste dal computer locale."

C'è un punto in questo? Ho visto altri siti chiamare questo "più sicuro", ma chiunque potrebbe creare le proprie forme facilmente rendendo questo nient'altro che un fastidio se me lo chiedi.

+2

Hai avuto una domanda? Si potrebbe anche voler dire quale versione .NET si sta utilizzando, o se si sta utilizzando servizi ASMX o WCF. –

+0

Come posso chiamare il servizio web? Ho bisogno di eseguire l'evento quando succede qualcosa sul ServerSide. Dovrei inserire il programma nel server host? –

risposta

3

Se si pubblicano i metadati e si tratta di un servizio Web pubblico/non protetto, è giusto, sarebbe abbastanza facile per chiunque generare un semplice client da eliminare nel proprio servizio Web. In tal caso, avere il client Web generato solo sul computer locale sembra un fastidio.

Se il vostro servizio è privato e protetto, tuttavia, sarebbe un enorme buco di sicurezza, dando a chiunque con il nome del server e servizio un client autenticato da utilizzare per accedere potenzialmente ai vostri dati e fare tutti i tipi di danni.

Immagino che la politica di generazione dell'interfaccia utente per i servizi Web ASMX solo sul server stesso fosse un tentativo di fornire alcuni strumenti utili eliminando al contempo i buchi di sicurezza accidentali. In ogni caso, WCF ha eliminato questo problema, è possibile generare client solo se i metadati sono pubblicati e devono implementare la sicurezza corretta per accedere ai servizi.

+0

Quindi come faccio a lavorare? – Si8

+2

La risposta sotto (quella con 120+ upvotes) ti dice come farlo funzionare - buona fortuna! –

+0

Ho posto questa domanda: http://stackoverflow.com/questions/41752213/why-is-asmx-giving-an-error-with-pulling-data-from-client-script. Puoi per favore aiutare? – Si8

138

è possibile aggirare questo problema modificando il web.config per includere questi nodi:

<configuration> 
    <system.web> 
    <webServices> 
     <protocols> 
      <add name="HttpGet"/> 
      <add name="HttpPost"/> 
     </protocols> 
    </webServices> 
    </system.web> 
</configuration> 

Questo vi permetterà di visitare il servizio Web ASMX tramite il browser. È quindi possibile richiamare i servizi Web direttamente nel browser, passare argomenti e visualizzare i risultati.

+8

+1 perché la mia app si trova in un ambiente sicuro e per il controllo qualità è assolutamente necessario. Grazie. – BryanGrimes

+7

+1 ha risolto il mio problema .. molto utile :) –

+0

Mi aiuta anche, ma ho un altro problema, in quanto mi reindirizza alla pagina con la porta specificata. Come posso rimuovere la porta dalla stringa di indirizzo. –

14

Solo FYI Sto usando .NET 4.0 e ho avuto lo stesso problema.

Tuttavia ho usato ...

<add name="HttpSoap12"/> 
<add name="HttpSoap"/> 
<add name="HttpGet"/> 
<add name="HttpPost"/> 

In quegli stessi settori e ha funzionato. Ma con solo HttpGet e HttpPost no.

Problemi correlati