【发布时间】:2019-06-20 08:23:42
【问题描述】:
所以我有一个 IIS10 网络服务器,运行着很多应用程序,例如:
+ Default Web Site
-First Application
-Second Application
-Third Application
我们正在使用 nLog 将内容记录到数据库中,其中之一是当前的 appdomain
${appdomain:format=Format}
如https://github.com/NLog/NLog/wiki/AppDomain-Layout-Renderer 中所述。
这很好,除了当我查看我们的合并日志时,我看到 appdomain 记录为:
0002:/LM/W3SVC/2/ROOT-1-132036049222959352
我想把它翻译成“第三个应用程序”(所以当我创建一个报告时,它会显示为“第三个应用程序”而不是 0002:/LM/W3SVC/2/ROOT-1-132036049222959352。)
条件是:
- 我无法更改布局渲染器。
- 我无法更改应用程序的代码。
- 我必须在记录数据后执行此操作。我假设 /LM/W3SVC/2/ROOT 是我需要转换的,我不能在应用程序中进行,只能在报告中进行。
我尝试过 Microsoft.Web.Administration,类似于:
using (ServerManager sm = new ServerManager()){
var thisVal = (from s in sm.Sites
from app in s.Applications
from vDir in app.VirtualDirectories
where vDir.Path.Equals(currVal,StringComparison.InvariantCultureIgnoreCase)
select new KeyValuePair<string, string>(currVal, vDir.Path));
}
但我在任何地方都找不到应用程序根目录。我相信它和https://docs.microsoft.com/en-us/previous-versions/iis/6.0-sdk/ms524308(v=vs.90) 是一样的,但那是IIS 元数据库,它显然已经过时并且被破坏了。
(上面的代码将与应用程序在同一台机器上运行,所以我不必担心找到正确的服务器,只需翻译名称)
【问题讨论】:
-
对您的设置一无所知。但是,如果您有 3 个应用程序。那么你可能有 3 个 web.config。为什么不直接更改 3 个应用程序的 web.config 以包含它们各自的“真实”名称?
-
我希望它这么简单——但我不能对应用程序做任何事情,数据库中的数据就是我能接触到的所有数据。
-
您确定
0002:/LM/W3SVC/2/ROOT-1-132036049222959352属于Third Application吗?它必须是0002:/LM/W3SVC/2/ROOT/Third Application-1-132036049222959352。