Freigeben über


Problembehandlung für Webdienste

Microsoft BizTalk Server nutzt Webdienste umfassend für die Verwendung mit dem SOAP-Adapter und beim Veröffentlichen von Orchestrierungen als Webdienste. In diesem Thema werden Schritte zur Fehlerbehebung bei Webdiensten sowie ein paar häufige Webdienstprobleme und deren Behebung beschrieben.

Verwenden .NET Framework Ablaufverfolgung zum Erfassen und Protokollieren von Fehlern in einem Webdienst

Die .NET Framework System.Diagnostics.Trace-Klasse kann verwendet werden, um Fehler zu erfassen und in eine Textdatei zu schreiben.

So verwenden Sie die „System.Diagnostics.Trace“-Klasse zum Erfassen und Schreiben von Fehlern in eine Textdatei

  1. Aktualisieren Sie die web.config-Datei für den Webdienst, um die TRACE-Compilerdirektive auf TRUE festzulegen und einen TraceSwitch-Wert hinzuzufügen:

    <?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>
    

    Hinweis

    Wenn die TRACE-Compilerdirektive nicht auf true festgelegt ist, wird keine Ablaufverfolgungsausgabe generiert. Der TraceSwitch-Wert kann auch in der aufrufenden Klasse festgelegt werden, wird jedoch hier in der web.config-Datei festgelegt. Legen Sie den TraceSwitch-Wert für Entwicklungszwecke auf die entsprechende Ebene fest, und ändern Sie den Wert nach Abschluss der Entwicklung, um die Ablaufverfolgungsausgabe zu reduzieren oder zu verhindern.

  2. Erstellen Sie eine instance der Klassen TraceSwitch und TextWriterTraceListener, und verwenden Sie einen Try... Catch-Block im Webdienstaufruf [WebMethod] zum Abfangen und Schreiben von Fehlern in eine Ablaufverfolgungsausgabedatei. Mit dem folgenden Code wird beispielsweise ein Fehler aufgefangen, der bei dem Versuch generiert wird, die ganzzahlige Variable s2 auf eine NULL-Instanz der Objektvariablen o2 festzulegen:

    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.";
            }
        }
    }
    

    Hinweis

    Dieser Code ist eine geänderte Version des HelloWorld-Standardwebdiensts, der generiert wird, wenn Sie ein neues ASP.Net Webdienstprojekt in Microsoft Visual Studio erstellen.

    Hinweis

    Für Windows Vista sind möglicherweise Administratorrechte erforderlich, um die Ablaufverfolgungsausgabedatei in den Stammordner zu schreiben.

  3. Erstellen Sie das Webdienstprojekt erneut. Wenn nun ein Fehler in der Try-Anweisung auftritt, wird die Ausnahme in der Catch-Anweisung behandelt, und ein Fehler wird in die Ablaufverfolgungsausgabedatei geschrieben.

Bekannte Probleme

Von einem Webdienst wird die Fehlermeldung 'HTTP 404 (Datei wurde nicht gefunden)' zurückgegeben

Problem

Bei dem Versuch, einen Webdienst aufzurufen, wird die Fehlermeldung HTTP 404 (Datei wurde nicht gefunden) zurückgegeben.

Ursache

Dieser Fehler kann auftreten, wenn ASP.NET auf dem IIS-Server, der den Webdienst hostet, nicht installiert oder aktiviert wurde.

Lösung

Stellen Sie sicher, dass ASP.NET installiert und aktiviert ist. Installieren Sie die .NET Framework, wenn sie nicht installiert ist, und/oder führen Sie das aspnet_regiis.exe-Programm aus, das sich im Ordner %WinDir%\Microsoft.NET\Framework\vXXX.XXX\ des IIS-Servers befindet.

Fehler 'System.IO.FileNotFoundException' beim Aufrufen eines Webdiensts

Problem

Beim Aufrufen eines Webdiensts in einer Microsoft ASP.NET-Webanwendung wird folgende Fehlermeldung angezeigt:

System.IO.FileNotFoundException

Ursache

Dieser Fehler kann auftreten, wenn eine der folgenden Bedingungen zutrifft:

  • Der Arbeitsprozess verfügt nicht über Lese- und Schreibberechtigungen für das temporäre Arbeitsverzeichnis.

  • Der von XmlSerializer generierte Code enthält Kompilierungsfehler.

Lösung

Dieser Fehler ist in PRB dokumentiert: Sie erhalten einen "System.IO.FileNotFoundException"-Fehler, wenn die Clientanwendung einen Webdienst aufruft.

Weitere Informationen

Richtlinien zum Beheben von PROBLEMEN mit IIS-BerechtigungenRichtlinien zum Beheben von Problemen mit Webdienstberechtigungen