WebService Projekt

  • Ich versuche gerade herauszugruebeln, wie ich am Besten zentrales Errorhandling in einem C# WebService Projekt implementiere. Anders als bei "normalen" WebSite/ASP Projekten, kann man dafuer ja nicht die "Application_Error" Methode in Global.asax verwenden.

    Ich habe paar Artikel gefunden, die in etwa erklaeren, wie das funktionieren soll (SoapExtension etc.), allerdings kann ich kein irgendwie deppensicheres Tutorial finden, wie man das ins Projekt selber integriert.

    Abgesehen davon, bin ich mir gar nicht 100% sicher, ob das ein g'scheite Loesung ist.

    Hat jemand vielleicht Erfahrung mit einer aehnlichen Fragestellung bzw. hat vielleicht paar step-by-step Tutorials bei der Hand?

    Danke.

    *** Make it idiot proof, and someone will build a better idiot. ***

  • Hi

    Ich hab noch nicht direkt ein Webservice geschrieben (habs aber in einem ähnlichen Context gebraucht). Ich würde da IoC verwenden und mir das benötigte in die WCF Instanzen injizieren lassen:
    http://initializecomponent.blogspot.com/2008/06/unity-wcf-and-iis.html
    http://www.neovolve.com/post/2010/05/1…093-Part-1.aspx
    http://www.global-webnet.net/blogengine/pos…-and-unity.aspx

    Wenn du Exceptions innerhalb eines Calls handeln willst dann einfach in Unity ICallHandler implementieren. Dann geht:

    Ich hoffe ich habe dein Problem richtig verstanden ;)

    LG

  • Danke fuer die Idee und die Links.

    Allerdings bin ich nicht dabei eine neue App zu schreiben, sondern uebernehme eine bestehende. In dem Sinne bin ich etwas limitiert was groebere Architekturideen betrifft.

    Die bestehende App 0 Logging. Nicht mal error logging (geschweige denn andere sinnvolle Benchmarks). Deswegen bin ich auf der Suche nach einer zentralen Methode um zumindest error logging hinzuzufuegen (jede einzelne Webmethode durchzugehen und error logging hinzuzufuegen wird ziemlich muehsam).

    Nachdem das wie gesagt ziemlich einfach bei "normalen ASP Apps" funkt (Application_Error methode in Global.asax), hab ich mir gedacht, dass es auch einen einfachen Weg geben muss, dass fuer ein Webservice Projekt zu machne.

    Oder?

    *** Make it idiot proof, and someone will build a better idiot. ***

  • Ah ok. Hast du dir schon http://msdn.microsoft.com/en-us/library/…ationstate.aspx angeschaut?

    Zitat

    A single instance of an HttpApplicationState class is created the first time a client requests any URL resource from within a particular ASP.NET application virtual directory. A separate single instance is created for each ASP.NET application on a Web server. A reference to each instance is then exposed via the intrinsic Application object.

    Beispiel http://msdn.microsoft.com/en-us/library/y8hhek39(VS.80).aspx

    Zitat

    Application state is a data repository that is available to all classes within an ASP.NET application. Application state is stored in memory on the server and is faster than storing and retrieving data in a database. Unlike session state, which is specific to a single user session, application state applies to all users and sessions. Therefore, application state is a useful place to store small amounts of often-used data that does not change from one user to another.

    So würdest du zumindest mal die Log Referenz hineinbekommen. Sonst kannst du noch PostSharp probieren - dann brauchst du nur annotieren - das sollte dann alle Exceptions abfangen.
    http://davybrion.com/blog/2008/05/w…with-postsharp/
    Oder mit WCF alleine
    http://www.haveyougotwoods.com/archive/2009/0…ler-in-wcf.aspx

    2 Mal editiert, zuletzt von damike (26. September 2010 um 08:49)

  • Danke fuer die Tipps.

    Ich hab das Problem nun folgendermassen geloest:

    SoapExtension an sich:

    Und dann die Web.config Modifikation:

    Code
    **snip**
        <webServices>
          <soapExtensionTypes>
            <add type="SoapExtensions.ExceptionTraceExtension,[AssemblyNameWhereSoapExtensionEmbedded]"
                 priority="1"
                 group="High" />
          </soapExtensionTypes>
        </webServices>
    **snip**

    Hier sind einige Links die hilfreich dabei waren:
    http://msdn.microsoft.com/en-us/magazine/cc164007.aspx
    http://forums.asp.net/p/1348319/2746321.aspx
    http://stackoverflow.com/questions/2628…ning-on-iis-6-0

    Das ist auch ein interessanter Artikel, funkt aber wie gesagt nicht fuer Web Services:
    http://msdn.microsoft.com/en-us/library/aa479332.aspx

    *** Make it idiot proof, and someone will build a better idiot. ***

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!