Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft BizTalk Server usa ampiamente i servizi Web per l'uso con l'adapter SOAP e durante la pubblicazione di orchestrazioni come servizi Web. Questo argomento illustra alcuni passaggi che è possibile seguire per risolvere i problemi dei servizi Web, nonché alcuni problemi comuni relativi ai servizi Web e come risolvere tali problemi.
Usare la traccia di .NET Framework per acquisire e registrare gli errori in un servizio Web
La classe System.Diagnostics.Trace di .NET Framework può essere usata per acquisire e scrivere errori in un file di testo.
Per usare la classe System.Diagnostics.Trace per acquisire e scrivere errori in un file di testo
Aggiornare il file web.config per il servizio Web per impostare la direttiva del compilatore TRACE su true e aggiungere un valore TraceSwitch :
<?xml version="1.0"?> <configuration> <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/d:TRACE" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="1" /> </compilers> </system.codedom> <system.diagnostics> <switches> <add name="WebSvcTraceSwitch" value="2" /> <!-- Set to 0, 1, 2, 3, or 4, which corresponds to TraceLevel.Off, TraceLevel.Error, TraceLevel.Warning TraceLevel.Info, and TraceLevel.Verbose. --> </switches> </system.diagnostics> </configuration>
Annotazioni
Se la direttiva del compilatore TRACE non è impostata su true , non verrà generato alcun output di traccia. Il valore TraceSwitch può essere impostato anche nella classe chiamante, ma è impostato qui nel file web.config per praticità. Impostare il valore TraceSwitch sul livello appropriato a scopo di sviluppo e modificare il valore una volta completato lo sviluppo per ridurre o inibire l'output di traccia.
Creare un'istanza delle classi TraceSwitch e TextWriterTraceListener e usare un blocco di codice try…catch nel chiamare il metodo [WebMethod] del servizio Web per intercettare e scrivere errori in un file di output di traccia. Ad esempio, il codice seguente intercetta un errore generato quando si tenta di impostare la variabile di tipo intero s2 su un'istanza nulla della variabile oggetto o2.
using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Diagnostics; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { TraceSwitch WebSvcTraceSwitch = new TraceSwitch("WebSvcTraceSwitch", "Web Service Trace"); TextWriterTraceListener TestTracer = new TextWriterTraceListener("C:\\traceout.txt"); // Note that by default the local ASPNET account(IIS 5.x) or the // local NETWORK SERVICE account(IIS 6.0) needs write access to // this directory so that the instance of the // TextWriterTraceListener can write to the trace output file. ); public Service () { } [WebMethod] public string HelloWorld() { string h2 = "Hello World"; //object o2 = 1; object o2 = null; try { int s2 = (int)o2; //Error if o2 set to null return h2; } catch(Exception e) { Trace.Listeners.Add(TestTracer); Trace.WriteLineIf(WebSvcTraceSwitch.Level = TraceLevel.Warning, "Exception caught: " + e.Message); //Writes to the trace file if specified TraceLevel switch value (in web.config) >= 2 TestTracer.Dispose(); return "An error occurred in the Web service, please contact the web server administrator."; } } }
Annotazioni
Questo codice è una versione modificata del servizio Web HelloWorld predefinito generato quando si crea un nuovo progetto di servizio Web ASP.Net in Microsoft Visual Studio.
Annotazioni
Per Windows Vista, i privilegi di amministratore potrebbero essere necessari per scrivere il file di output di traccia nella cartella radice.
Ricompilare il progetto del servizio Web. A questo punto, se si verifica un errore nell'istruzione Try , l'eccezione viene gestita nell'istruzione Catch e viene scritto un errore nel file di output della traccia.
Problemi noti
Un servizio Web restituisce un errore HTTP 404 (File non trovato)
Problema
I tentativi di chiamare un servizio Web restituiscono un errore HTTP 404 (file non trovato).
Motivo
Questo errore può verificarsi se ASP.NET non è installato e/o abilitato nel server IIS che ospita il servizio Web.
Risoluzione
Assicurarsi che ASP.NET sia installato e abilitato. Installare .NET Framework se non è installato ed eseguire il programma aspnet_regiis.exe che si trova nella cartella %WinDir%\Microsoft.NET\Framework\vXXX.XXX\ del server IIS.
Un errore "System.IO.FileNotFoundException" si verifica quando viene chiamato un servizio Web
Problema
Quando si chiama un servizio Web in un'applicazione Web di Microsoft ASP.NET, è possibile che venga visualizzato l'errore seguente:
System.IO.FileNotFoundException
Motivo
Questo errore può verificarsi se una delle condizioni seguenti è vera:
Il processo di lavoro non dispone delle autorizzazioni per la lettura nella directory Temp del processo e il processo di lavoro non dispone delle autorizzazioni per la scrittura nella directory temp del processo.
Nel codice generato da XmlSerializer sono presenti errori di compilazione.
Risoluzione
Questo errore è documentato in PRB: viene visualizzato un errore "System.IO.FileNotFoundException" quando l'applicazione client chiama un servizio Web".
Vedere anche
Linee guida per la risoluzione dei problemi relativi alle autorizzazioni IISper la risoluzione dei problemi relativi alle autorizzazioni dei servizi Web