C# HttpContext.FileSystemWatcher中当前为空

C# HttpContext.FileSystemWatcher中当前为空,c#,.net,asp.net-mvc,filesystemwatcher,httpcontext,C#,.net,Asp.net Mvc,Filesystemwatcher,Httpcontext,我有一个ASP.NETMVC4应用程序 另外,我在应用程序的根目录中有一个XML文件 每当管理员更改此文件时,我都希望应用程序了解它并读取新值 ... FileSystemWatcher Watcher = new FileSystemWatcher(); Watcher.Changed += new FileSystemEventHandler(OnChanged); ... private void OnChanged(object source, FileSystemEventArgs

我有一个ASP.NETMVC4应用程序

另外,我在应用程序的根目录中有一个XML文件

每当管理员更改此文件时,我都希望应用程序了解它并读取新值

...
FileSystemWatcher Watcher = new FileSystemWatcher();
Watcher.Changed += new FileSystemEventHandler(OnChanged);
...

private void OnChanged(object source, FileSystemEventArgs e) {
    var path = HttpContext.Current.Server.MapPath("~/"))
}
每次
HttpContext.Current
似乎都为空。如果这不起作用,如何获取我的应用程序的根文件夹

如果这不起作用,如何获取我的应用程序的根文件夹

正是你需要的

var domainPath = HttpRuntime.AppDomainAppPath;

还有另一种选择。
Server.MapPath
在没有活动HttpContext的情况下所做的事情

实际上,唯一的区别是允许将null传递给Server.MapPath(),但不允许传递给HostingEnvironment.MapPath()

var domainPath = HttpRuntime.AppDomainAppPath;