目录
- 前言
- 方案一
- 打开网站对应的程序池的高级设置
- 按下图步骤设置凭据
- 重启网站
- 若方案一未能解决,请继续尝试方案二👇
- 方案二
- 从控制面板进入到 凭据管理器
- 为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服务进行权限设置:
打开网站对应的程序池的高级设置
按下图步骤设置凭据
重启网站
若方案一未能解决,请继续尝试方案二👇
方案二
如果方案一还是无效,那就需要取操作Windows凭据了
从控制面板进入到 凭据管理器
为windows凭据添加凭据
点击Windows凭据,并点击添加Windows凭据
键入远程路径的地址、账户名和访问密码
再次调用WebService即可成功
总结
所以我们在保证路径格式正确的前提下,只能考虑权限的问题。 我们通常在文件管理器键入路径访问方式下的账户不同于IIS调用方式的账户
以下官方文档中就给到了很明确的解释: