我正在尝试将xml文件保存在网络共享上,但是由于某些未知原因,保存过程暂停了。
例如:我有一个XML文档,我想另存为
var filename = {guid}.xml
var shareFolder = "\\\\<my machine\\Share";
var filePath = Path.Join(shareFolder,filename);
我已经检查过
Directory.Exists(shareFolder)
返回true-因此至少该文件夹存在于共享中。
对所有人的文件夹共享权限设置为“写”。
我尝试使用
xml.Save(filePath);
File.WriteAllText(filePath, xml.OuterXml);
但是在保存过程停顿下来的情况下却得到了类似的结果。日志也没有告诉我任何事情。
我使用https://github.com/mj1856/SimpleImpersonation使身份验证正常工作。
。Net Core 3.1的最终结果如下:
private void Process xml(string xmlInput)
{
var xmlDocument = XDocument.Parse(xmlInput);
var filename = $"{Guid.NewGuid()}.xml";
var filePath = Path.Combine(_outputFolder, filename);
if (filePath.StartsWith("\\"))
{
SaveOnNetworkShare(xmlDocument, filePath);
}
else
{
SaveLocally(xmlDocument, filePath);
}
}
private void SaveLocally(XmlDocument xml, string filePath)
{
xml.Save(filePath);
}
private void SaveOnNetworkShare(XmlDocument xml, string filePath)
{
try
{
Impersonation.RunAsUser(_credentials, LogonType.Network, () =>
{
xml.Save(filePath);
});
}
catch (ImpersonationException ex)
{
_logger.LogError(new EventId(-1, "Error saving file"), ex, $"Could not save file to filepath {filePath}");
}
}