WinInet non è supportato in un servizio o in un'applicazione IIS

Avviso

L'applicazione desktop Internet Explorer 11, ritirata e fuori supporto, è stata disabilitata in modo permanente tramite un aggiornamento di Microsoft Edge su alcune versioni di Windows 10. Per altre informazioni, vedere Domande frequenti sul ritiro delle app desktop di Internet Explorer 11.

Le funzioni Internet Microsoft Win32 (esportate da WinInet.dll) non sono supportate quando vengono eseguite da un servizio o da un'applicazione Internet Information Server (IIS) (anche un servizio). Questo articolo illustra l'uso del WinInet.dll in un servizio o nelle applicazioni IIS.

Versione originale del prodotto: Internet Explorer
Numero KB originale: 238425

Ulteriori informazioni

Poiché IIS è un servizio, si avrà lo stesso set di problemi relativi all'esecuzione di WinInet in un'estensione ISAPI (Internet Server Application Program Interface) o in una DLL COM-- DLL ActiveX usata da Asp (Active Server Pages)-- come nell'esecuzione di WinInet in un servizio. L'esecuzione di WinInet in un'applicazione IIS presenta anche un set univoco di problemi.

Il problema con l'esecuzione di WinInet in un servizio è che WinInet usa le impostazioni del Registro di sistema per informazioni SSL, informazioni sul proxy e altro ancora. I servizi non caricano l'hive HKEY_CURRENT_USER del Registro di sistema, pertanto queste informazioni non sono disponibili.

Avviso

Microsoft non supporta l'uso delle API WinInet nel contesto di un servizio di sistema.

Le API WinInet segnalano violazioni di accesso quando vengono usate dal servizio tramite SSL con Internet Explorer 5.0 installato.

Per comprendere le limitazioni specifiche dell'uso di WinInet in un ambiente server, è necessario comprendere la cronologia di WinInet. WinInet è stato sviluppato per l'uso da Internet Explorer. Per usare versioni successive di WinInet, infatti, è necessario caricare un'installazione minima di Internet Explorer. WinInet espone anche le API per l'uso da parte di altre applicazioni client che desiderano accedere alle risorse su Internet (o intranet). È importante riconoscere l'ambiente in cui WinInet è stato sviluppato e testato per comprendere l'uso appropriato per la DLL. WinInet è stato sviluppato per l'uso in un ambiente client. Sebbene funzioni ancora come client quando è in esecuzione in una DLL ISAPI, in questo caso è in esecuzione in un ambiente server.

Ambiente client: una persona che esegue Internet Explorer

  • Numero relativamente basso di richieste
  • Richieste effettuate in modo relativamente consecutivo
  • La durata dell'applicazione host è breve (durata della sessione del browser)

Ambiente server: un server Web (ad https://www.microsoft.comesempio )

  • Numero elevato di richieste al secondo
  • Più thread che eseguono richieste contemporaneamente
  • Deve essere eseguito per settimane o mesi

La soluzione preferita consiste nell'usare WinHttp, progettato per l'esecuzione in un ambiente del servizio, e poiché si tratta di uno stack HTTP sul lato server, non è associato ai due limiti di connessione imposti da RFC 2616 che lo stack HTTP sul lato client. Questo set di API è simile nell'utilizzo a WinInet, quindi quelli che hanno familiarità con WinInet troveranno facile adattarsi.

Un'altra soluzione consiste nell'usare i socket direttamente in Platform SDK include un esempio che illustra come usare WinSock tramite SSL. Nella cartella dell'SDK è disponibile un esempio \Microsoft Platform SDK\Samples\Winbase\Security\Ssl .

Un altro problema da tenere presente quando si usa WinInet in un ambiente server è il limite di due connessioni imposto da Internet Explorer.

Sebbene sia possibile usare WinInet in un servizio e in un ambiente server, non è consigliabile né è supportato da Microsoft. WinInet non è stato testato in questa configurazione e esistono problemi.