【发布时间】:2013-09-13 21:26:05
【问题描述】:
我有三个项目:My.Business、My.WebSite 和 My.WebService
我需要我的日志记录类能够识别来自网站和网络服务的请求。我曾经让 Web 服务作为网站下方的单独应用程序运行,所以我只使用不同的配置文件,效果很好。但我现在希望 Web 服务在同一个应用程序下运行。
如果我能确定请求是来自 My.WebSite 还是 My.WebService,我会做好准备,但我不知道该怎么做。
- Assembly.GetExecutingAssembly() 返回 My.Business
- Assembly.GetEntryAssembly() 为空
- 我可以检查 StackTrace,但这似乎很草率,我必须如何返回?特别是因为日志记录可能由 My.Business 中最初从其他项目之一调用的代码触发。
由于 Web 服务请求以“.asmx”结尾,因此以下概念有效,但感觉不对。
return HttpContext.Current.Request.Path.IndexOf(".asmx") >= 0 ? "My.WebService" : "My.WebSite";
谢谢!
【问题讨论】:
-
我想说你可以在这里做一些控制反转; My.Business 类应该被“给予”他们工作所需的信息(以不同的方式),而不是试图找到它......如果你引入第三个应用程序怎么办......现在你必须再次更改 My.Business .
-
我考虑过这一点,但日志记录发生在所有三个项目中。所以我不确定如何让 My.Business 进行日志记录并传递有关是否登录到 WebSite 或 WebService 的信息。
标签: c# c#-4.0 reflection log4net log4net-configuration