Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Microsoft BizTalk Server utilise largement les services Web à utiliser avec l’adaptateur SOAP et lors de la publication d’orchestrations en tant que services Web. Cette rubrique fournit quelques étapes que vous pouvez suivre pour résoudre les problèmes liés aux services Web, ainsi que certains problèmes courants liés aux services Web et comment résoudre ces problèmes.
Utiliser le suivi .NET Framework pour capturer et consigner des erreurs dans un service web
La classe .NET Framework System.Diagnostics.Trace peut être utilisée pour capturer et écrire des erreurs dans un fichier texte.
Pour utiliser la classe System.Diagnostics.Trace pour capturer et écrire des erreurs dans un fichier texte
Mettez à jour le fichier web.config du service Web pour définir la directive du compilateur TRACE sur true et 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>
Remarque
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 une instance des classes TraceSwitch et TextWriterTraceListener et utilisez un bloc d'essai… capture dans l'appel de service Web [WebMethod] pour capturer et écrire des erreurs dans le fichier de sortie de trace. Par exemple, le code suivant intercepte une erreur 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."; } } }
Remarque
Ce code est une version modifiée du service Web HelloWorld par défaut généré lorsque vous créez un projet de service web ASP.Net dans Microsoft Visual Studio.
Remarque
Pour Windows Vista, les privilèges d’administrateur peuvent être nécessaires pour écrire le fichier de sortie de trace dans le dossier racine.
Régénérer 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 qu’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 retournent une erreur HTTP 404 (fichier introuvable).
La 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
Vérifiez que 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, vous pouvez recevoir l’erreur suivante :
System.IO.FileNotFoundException
La cause
Cette erreur peut se produire si l’une des conditions suivantes est remplie :
Le processus de travail n’a pas les autorisations nécessaires pour lire le répertoire Temp du processus et le processus worker n’a pas les autorisations d’écriture dans le répertoire Temp du processus.
Il existe des erreurs de compilation dans le code généré par XmlSerializer.
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 relatives à la résolution des problèmes d’autorisations IISInstructions relatives à la résolution des problèmes d’autorisations des services web