Résolution des problèmes liés aux services web
Microsoft BizTalk Server utilise largement les services Web pour une utilisation avec l’adaptateur SOAP et lors de la publication d’orchestrations en tant que services Web. Cette rubrique propose des procédures à suivre pour résoudre les problèmes liés aux services Web que vous êtes le plus susceptible de rencontrer.
Utilisation du suivi .NET Framework pour capturer et consigner les erreurs d'un service Web
La classe .NET Framework System.Diagnostics.Trace peut être utilisée pour capturer et écrire des erreurs dans un fichier texte.
Utilisation de la classe System.Diagnostics.Trace pour capturer et écrire les erreurs dans un fichier texte
Mettez à jour le fichier web.config pour le service Web afin de définir la directive du compilateur TRACE sur true et d’ajouter une valeur 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>
Notes
Si la directive du compilateur TRACE n’est pas définie sur true , aucune sortie de trace n’est générée. La valeur TraceSwitch peut également être définie dans la classe appelante, mais elle est définie ici dans le fichier web.config pour des raisons pratiques. Définissez la valeur TraceSwitch sur le niveau approprié à des fins de développement et modifiez la valeur une fois le développement terminé pour réduire ou empêcher la sortie de trace.
Créez un instance des classes TraceSwitch et TextWriterTraceListener et utilisez un try... catch block in the Web service [WebMethod] call to trap and write errors in a trace output file. Par exemple, le code suivant intercepte une erreur qui est générée lors de la tentative de définition de la variable entière s2 sur une instance null de la variable objet 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."; } } }
Notes
Ce code est une version modifiée du service web HelloWorld par défaut qui est généré lorsque vous créez un projet de service web ASP.Net dans Microsoft Visual Studio.
Notes
Pour Windows Vista, des privilèges d’administrateur peuvent être requis pour écrire le fichier de sortie de trace dans le dossier racine.
Reconstruisez le projet de service Web. À présent, si une erreur se produit dans l’instruction Try , l’exception est gérée dans l’instruction Catch et une erreur est écrite dans le fichier de sortie de trace.
Problèmes connus
Un service Web retourne une erreur HTTP 404 (fichier introuvable).
Problème
Les tentatives d'appel d'un service Web renvoient une erreur HTTP 404 (fichier introuvable).
Cause
Cette erreur peut se produire si ASP.NET n'est pas installé et/ou activé sur le serveur IIS qui héberge le service Web.
Résolution
Assurez-vous qu'ASP.NET est installé et activé. Installez le .NET Framework s’il n’est pas installé et/ou exécutez le programme aspnet_regiis.exe situé dans le dossier %WinDir%\Microsoft.NET\Framework\vXXX.XXX\ du serveur IIS.
Une erreur « System.IO.FileNotFoundException » se produit lorsqu'un service Web est appelé.
Problème
Lorsque vous appelez un service Web dans une application Web Microsoft ASP.NET, il est possible que vous receviez l'erreur suivante :
System.IO.FileNotFoundException
Cause
Cette erreur peut se produire si l'une des conditions suivantes est vraie :
Le processus de travail ne dispose ni des autorisations pour lire le répertoire temporaire de processus ni des autorisations pour écrire dans le répertoire temporaire de processus.
Le code généré par XmlSerializer contient des erreurs de compilation.
Résolution
Cette erreur est documentée dans PRB : Vous recevez une erreur « System.IO.FileNotFoundException » lorsque l’application cliente appelle un service web ».
Voir aussi
Instructions pour la résolution des problèmes d’autorisations IISInstructions pour résoudre les problèmes d’autorisations des services web