我正在寻找使用 .NET FileSystemWatcher 监视某些目录的 Windows 服务。我的计划是拥有一个具有 IncludeSubdirectores=True 的 FileSystemWatcher。但是我不想监视所有的子目录。所以我的方法是创建一个我确实想要监控的目录的“白名单”。如果文件被更改并且它位于我真正关心的目录中,我将采取一些措施。
现在这是我的问题所在。我希望在 app.config 中使用自定义配置部分来构建我的“白名单”。
<ApplicationMonitoring>
<MainDirectoryMonitored path="C:\MonitoredApps" />
<SubDirectoriesMonitored>
<Directory application="App1" path="C:\MonitoredApps\App1" />
<Directory application="App2" path="C:\MonitoredApps\App2" />
<Directory application="App3" path="C:\MonitoredApps\App3\SubDir1" />
</SubDirectoriesMonitored>
</ApplicationMonitoring>
到目前为止还不错吧?我可以将 fileSystemWatcher.Path = 设置为“MainDirectoryMonitored”的“path”属性,并且可以枚举“SubDirectoriesMonitored”并检查它是否是我想要监控的。
我想知道的是是否有可能验证子目录的路径确实确实落在了受监控的主目录的路径下。
示例:验证 C:\MonitoredApps\App3\SubDir1 确实位于 C:\MonitoredApps 等之下的某个位置。
我知道它对用户来说应该非常直观,他们应该正确输入内容,但我想尽可能消除所有错误。
我认为这可以通过某种自定义配置验证器来完成,但是
a) 我不确定它是否可以使用配置中的另一个值来验证
b) 我不知道如何去做:)