My.Business、My.WebSite、My.WebService の 3 つのプロジェクトがあります。
要求が Web サイトから行われたときと Web サービスから行われたときを識別できるようにするには、ログ クラスが必要です。以前は、Web サービスを Web サイトの下で別のアプリケーションとして実行していたので、別の構成ファイルを使用するだけで問題なく動作しました。しかし、Web サービスを同じアプリケーションの下で実行したいと考えています。
リクエストが My.WebSite からのものか、My.WebService からのものかがわかれば問題ありませんが、その方法がわかりません。
- Assembly.GetExecutingAssembly() は My.Business を返します
- Assembly.GetEntryAssembly() が null です
- 私は StackTrace をチェックできましたが、それはずさんなようで、どうやって戻る必要がありますか? 特に、他のプロジェクトの 1 つから最初に呼び出された My.Business のコードによってログがトリガーされる可能性があるためです。
Web サービス リクエストは ".asmx" で終わるため、次の概念は機能しますが、適切ではありません。
return HttpContext.Current.Request.Path.IndexOf(".asmx") >= 0 ? "My.WebService" : "My.WebSite";
ありがとう!