C#关于WebService中File.Exists()处理远程路径的异常记录

目录

  • 前言
    • 方案一
      • 打开网站对应的程序池的高级设置
      • 按下图步骤设置凭据
      • 重启网站
      • 若方案一未能解决,请继续尝试方案二
    • 方案二
      • 从控制面板进入到 凭据管理器
      • 为windows凭据添加凭据
        • 点击**Windows凭据**,并点击**添加Windows凭据**
        • 键入远程路径的地址、账户名和访问密码
      • 再次调用WebService即可成功
    • 总结

欢迎来访博主私人 薄·客.

前言

bool isExists = File.Exists(FileFullPathName);

没错,再熟悉不过的一行代码。大部分情况下,它的返回是正确的。但是在开发过程中,我确实遇到了比较棘手的情况:

在Debug模式下,它是没有问题的;当我发布到IIS后,传入FileFullPathName远程共享路径时,且确保路径格式没有问题的前提下,它将确实存在的文件判断为不存在。(这里强调一下:通过文件管理器直接访问这个远程文件路径是OK的)一开始,就觉得很神奇,很无语(ˉ▽ˉ;)…

像大家一样,我转向百度获取解决办法,大概分为这几种:

1、如果路径是Copy的,可能在Copy的过程中包含了不可视的Unicode字符,建议手动一个一个路径敲上去;
2、尝试使用Directory.Exists(path)【注意:Directory.Exists是用来判断文件夹是否存在的;File.Exists是用来判断文件是否存在的】
3、权限问题【算是说到点子上了,但是就是找不到具体的解决办法】

所以,该篇文章,将主要针对上述第三点展开具体解决措施的描述:

下文将从两个方法展开讲解,方式一和方式二取其一即可

方案一

归根到底问题出在IIS WebService,前面我们说了,Debug模式下它是能正常访问的,所以方案一中我们对IIS对应的WebService服务进行权限设置:

打开网站对应的程序池的高级设置

C#关于WebService中File.Exists()处理远程路径的异常记录_第1张图片

按下图步骤设置凭据

C#关于WebService中File.Exists()处理远程路径的异常记录_第2张图片

重启网站

C#关于WebService中File.Exists()处理远程路径的异常记录_第3张图片

若方案一未能解决,请继续尝试方案二

方案二

如果方案一还是无效,那就需要取操作Windows凭据

从控制面板进入到 凭据管理器

C#关于WebService中File.Exists()处理远程路径的异常记录_第4张图片

为windows凭据添加凭据

点击Windows凭据,并点击添加Windows凭据

C#关于WebService中File.Exists()处理远程路径的异常记录_第5张图片

键入远程路径的地址、账户名和访问密码

C#关于WebService中File.Exists()处理远程路径的异常记录_第6张图片

再次调用WebService即可成功

总结

所以我们在保证路径格式正确的前提下,只能考虑权限的问题。 我们通常在文件管理器键入路径访问方式下的账户不同于IIS调用方式的账户

以下官方文档中就给到了很明确的解释:
C#关于WebService中File.Exists()处理远程路径的异常记录_第7张图片

C#关于WebService中File.Exists()处理远程路径的异常记录_第8张图片

你可能感兴趣的:(C#,WebService,c#,IIS)