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