.NET-Web-Service-logging mit Log4Net funktioniert nicht von separaten client
In basic .NET web service (asmx), die Baue ich lokal versuche ich zu loggen mit Log4NET in eine Datei. Dies funktioniert gut, wenn ich Feuer up-debugging-Modus in Visual Studio und testen Sie den service mit dem wsdl/test-Seiten zur Verfügung gestellt. Aber wenn ich versuche über einen separaten client (ich habe eine C# - Konsolenanwendung, um den service aufzurufen), sehe ich die erwartete Antwort, bekomme aber KEINE Protokollierung.
(Der separate client-code ist unten aufgeführt. Musste ich importieren, die einen Verweis zu der DLL erstellt der web-service.)
Ich bin ein bisschen neu in diesem, aber ich spekulieren, das Problem ist, weil außerhalb des VS-server oder IIS (das ich geblieben bin, ohne), Global.asax wird nicht verwendet (enthält meine Initialisierungs-Befehl für die Anmeldung). Aber ich brauche zum testen von einem externen client. Wie kann ich Global.asax zu initialisieren, die von der client-Anwendung Perspektive, oder wie kann ich es vermeiden zu müssen? Klingt wie Sie es lösen würden meine logging-Problem?
Global.asax in meinem web-Dienst-Projekt enthält diese Aussage:
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
Und meine eigene client (Konsole) Anwendung sieht wie folgt aus:
static void Main(string[] args)
{
MyWebService proxy = new MyWebService();
MyWebService.Request request = new MyWebService.Request();
request.Type = "Test";
MyWebService.Response response = proxy.GetResponse(request);
Console.WriteLine("RESPONSE CODE: " + response.StatusCode);
Console.WriteLine("RESPONSE MSG: " + response.StatusMessage);
Console.WriteLine("Press any key to continue...");
Console.ReadKey(true);
}
Ich bin auch unsicher, wie ich mich ändern würde diese Konsole app zu Referenz der Visual Studio-server-Instanz (Beispiel: localhost:1583/MyWebService.asmx?op=GetResponse) anstatt eine proxy-Instanz des web-service. Ich denke, dass würde auch den trick tun, da der Visual Studio server nutzt Global.asax, Nein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfachere Weg
wäre, nach der log4net-Initialisierung innerhalb
static void Main
:Nicht vergessen
log4net
Konfiguration inapp.config
Datei von Ihrem neuen host.Der bessere Weg
wäre, sich zu bewegen Ihren Dienst zu separaten Projekt (es ist schon so, richtig?) so ist es erfüllt, der in seine eigene Montage. Als gelten
Attribut der
assemlyInfo.cs
. Finden Sie log4net Konfiguration-Handbuch für details (Suche nach Wortassembly
auf der Seite). Dieser Weg ist besser, weil Sie nicht haben, hinzufügen, dassin der Initialisierung aller host-Umgebungen, die Sie haben.
Aber stellen Sie sicher, dass Ihre log4net Konfiguration in
app.config
,web.config
oder was auch immer-Konfiguration-Datei, die Sie haben.