FileSystemWatcher 在 ASP.NET 下似乎没有触发

我正在尝试监视我的 asp.net mvc5 项目中的文件夹。我想把它放在 Startup.cs 中,在那里我初始化我的 FileSystemWatcher。


public static void initializeWatcher()

    {

        string importPath = @"\\server\Exchange\Inbox", importFilterType = "*.xml";

        try

        {

            FileSystemWatcher watcher = new FileSystemWatcher();

            watcher.Path = importPath;

            watcher.Filter = ".xml";

            watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName;

            watcher.Created += new FileSystemEventHandler(loadFile);

            watcher.Changed += new FileSystemEventHandler(loadFile);

            watcher.EnableRaisingEvents = true;

        }

        catch (Exception e)

        {


        }

    }


    private static void loadFile(object source, FileSystemEventArgs e)

    {

        xmlDocument.LoadXml(e.FullPath);

    }

}

现在,观察者被创建,但 'loadFile' 方法没有被触发,无论我在文件夹中做什么。我按照微软的例子:https ://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher( v= vs.110) .aspx


让我知道我做错了什么。


米琪卡哇伊
浏览 280回答 1
1回答

慕后森

您似乎在方法中创建了FileSystemWatcher作为局部变量。这当然会在方法结束时超出范围,并且很可能在那时得到整理,然后移除手表。尝试在 Startup.cs 中将 FSW 创建为私有对象public class Startup{    private FileSystemWatcher watcher {get;set;}    public Startup(IApplicationEnvironment env,               IHostingEnvironment hostenv,  ILoggerFactory logger)    {       //your setup FSW    {}接下来,尝试仅使用NotifyFilters.LastWrite.
打开App,查看更多内容
随时随地看视频慕课网APP