当前位置:   article > 正文

MVC5后台C#无法访问网络共享目录的解决办法_mvc发布后无法访问共享文件夹

mvc发布后无法访问共享文件夹

开发环境:

vs2015,C#,MVC5

做了一个简单的网站,其重点是后台需要访问其它电脑上的共享目录,在调试的时候一切正常,发布版本之后,在服务器上无法正常访问。这个问题在之前也遇到过两次,今天还是需要解决这个问题才行,因为后面碰到这种情况会越来越多。

通过搜索,找到了一个网址:https://www.cnblogs.com/knowledgesea/p/5145087.html

我看了这篇文章,大致思路就是先建立虚拟目录,然后通过虚拟目录来访问。按照这个办法操作,结果发现失败,在iis管理器中,建立的虚拟目录是可以打开的,但在后台代码中仍然无法访问:

建立虚拟目录:804_d1,对应的网络目录为:\\19.8.0.4\video,访问如下:

  1. string vPath = @"\\804_d1\\2021\\3";
  2. if (Directory.Exists(vPath))
  3. {
  4. WriteLog("目录可以访问");
  5. }
  6. else
  7. {
  8. WriteLog("目录访问失败");
  9. }

实际打印出来的是“目录访问失败”,vPath去掉前面的@也是一样,也就是说,@没有起到作用。参考那个网址,加上了个MapPath():

  1. string vPath = @"\\804_d1\\2021\\3";
  2. vPath = Server.MapPath(vPath);
  3. if (Directory.Exists(vPath))
  4. {
  5. WriteLog("目录可以访问");
  6. }
  7. else
  8. {
  9. WriteLog("目录访问失败");
  10. }

结果是一样的,另外发现,通过MapPath()之后,返回的路径就变成了正常的网络路径:\\19.8.0.4\video\2021\3,这样说,这个虚拟路径就没有任何意义了,就是因为像 “\\19.8.0.4\video\2021\3” 这样的网络路径无法访问,才要创建虚拟路径,现在倒好,又把虚拟路径转换成了网络路径。

实在没辙,仔细查看那个网址,发现最后部分有一段,是要在配置文件里加上配置项,位置:在网站根目录下的配置文件web.config中,在节点 configuration/system.web 下添加访问共享目录的用户信息:

<identity impersonate="true" userName="username" password="pwd" />

这样添加之后,

  1. string vPath = @"\\804_d1\\2021\\3";
  2. if (Directory.Exists(vPath))
  3. {
  4. WriteLog("目录可以访问");
  5. }
  6. else
  7. {
  8. WriteLog("目录访问失败");
  9. }

成功打印了“目录可以访问”,再试一下直接访问网络路径:

  1. string vPath = "\\\\19.8.0.4\\video\\2021\\3";
  2. if (Directory.Exists(vPath))
  3. {
  4. WriteLog("目录可以访问");
  5. }
  6. else
  7. {
  8. WriteLog("目录访问失败");
  9. }

发现也是成功的,打印了“目录可以访问”,这样来看,那虚拟目录还有用吗?我把虚拟目录804_d1删除掉,仍然直接访问网络路径,发现还是成功。

如此来说,得出的结论就是:在配置文件中添加访问共享目录的用户名和密码即可,其它乱七八糟的事情统统不需要。

 

有关ASP.NET的各种配置项参考:https://docs.microsoft.com/zh-cn/previous-versions/dotnet/netframework-4.0/9k6k3k4a(v=vs.100)

后记:

配置中的用户名,需要是系统的用户名,也就是说,在本地也需要建立要访问共享目录的用户帐号,如果没有建立这个帐号,在启动/访问网站时,会提示如下错误:

这个错误是我在F5启动调试的时候,浏览器上提示的,所以这个用户信息非常重要,一旦没有设置好,被用户看到用户名和密码就不好了,可以仔细参考
identity 元素(ASP.NET 设置架构) | Microsoft Docs 来设置一个安全的策略(我还没有设置,后面有空了再来弄这个事)

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/252304
推荐阅读
相关标签
  

闽ICP备14008679号