【发布时间】:2017-05-26 16:13:02
【问题描述】:
我有一个调用 WebDAV 文件的 C# 应用程序,就好像它是网络文件共享一样。
例如:
var file = File.ReadAllText(@"\\server\WebDAVRoot\file.txt");
但是,有时(似乎偶尔)这会返回“未找到网络路径”。当我远程访问服务器并检查共享时,代码神奇地开始工作。
这里有什么问题?
【问题讨论】:
我有一个调用 WebDAV 文件的 C# 应用程序,就好像它是网络文件共享一样。
例如:
var file = File.ReadAllText(@"\\server\WebDAVRoot\file.txt");
但是,有时(似乎偶尔)这会返回“未找到网络路径”。当我远程访问服务器并检查共享时,代码神奇地开始工作。
这里有什么问题?
【问题讨论】:
这里的问题是 .NET 无法访问 WebDAV 共享,除非 WebDAV 服务已经由用户触发启动。
默认情况下,此服务是“WebClient”服务 - 一些服务器甚至没有默认安装此服务(您可以通过从服务器管理器添加“桌面体验”功能来解决此问题)。
在服务器上安装 WebDAV 后,WebClient默认情况下设置为“手动(触发器启动)”。激活服务的触发器是对 WebDAV 共享的资源管理器调用 - 因此,.NET 代码不会触发服务启动。
您可以通过几种方式解决这个问题 - 我通过将 WebClient 服务设置为“Automatic”来解决它,但您也可以使用 ServiceController 从 C# 代码内部检查服务状态/启动服务类。
【讨论】: