为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
米琪卡哇伊 2021-10-24 19:39:34
我正在尝试监视我的 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让我知道我做错了什么。
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

您似乎在方法中创建了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.


查看完整回答
反对 回复 2021-10-24
  • 1 回答
  • 0 关注
  • 279 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信