ローカルで構築している基本的な .NET Web サービス (asmx) で、Log4NET を使用してファイルにログを記録しようとしています。Visual Studio でデバッグ モードを起動し、提供された wsdl/test ページを使用してサービスをテストすると、これは正常に機能します。しかし、別のクライアントを使用しようとすると (サービスを呼び出すために C# コンソール アプリを作成しました)、期待どおりの応答が表示されますが、ログは記録されません。
(別のクライアント コードを以下に示します。Web サービスのビルド済み DLL への参照をインポートする必要がありました。)
私はこれに少し慣れていませんが、問題はVSサーバーまたはIIS(私が立ち往生している)の外で、Global.asaxが使用されていないためだと推測しています(ログ用の初期化コマンドが含まれています)。しかし、外部クライアントからテストする必要があります。クライアント アプリケーションの観点から Global.asax を初期化するにはどうすればよいですか? または、その必要を回避するにはどうすればよいですか? これでロギングの問題が解決するように聞こえますか?
私の Web サービス プロジェクトの Global.asax には、次のステートメントが含まれています。
protected void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
そして、私の別のクライアント (コンソール) アプリケーションは次のようになります。
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);
}
Web サービスのプロキシ インスタンスを作成する代わりに、このコンソール アプリを変更して Visual Studio サーバー インスタンス (例: localhost:1583/MyWebService.asmx?op=GetResponse) を参照する方法も不明です。Visual Studio サーバーは Global.asax を利用しているので、それもうまくいくと思います。