MVC5后台C#无法访问网络共享目录的解决办法

2023-05-16

开发环境:

vs2015,C#,MVC5

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

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

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

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

string vPath = @"\\804_d1\\2021\\3";
if (Directory.Exists(vPath))
{
    WriteLog("目录可以访问");
}
else
{
    WriteLog("目录访问失败");
}

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

string vPath = @"\\804_d1\\2021\\3";
vPath = Server.MapPath(vPath);
if (Directory.Exists(vPath))
{
    WriteLog("目录可以访问");
}
else
{
    WriteLog("目录访问失败");
}

结果是一样的,另外发现,通过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" />

这样添加之后,

string vPath = @"\\804_d1\\2021\\3";
if (Directory.Exists(vPath))
{
    WriteLog("目录可以访问");
}
else
{
    WriteLog("目录访问失败");
}

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

string vPath = "\\\\19.8.0.4\\video\\2021\\3";
if (Directory.Exists(vPath))
{
    WriteLog("目录可以访问");
}
else
{
    WriteLog("目录访问失败");
}

发现也是成功的,打印了“目录可以访问”,这样来看,那虚拟目录还有用吗?我把虚拟目录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 来设置一个安全的策略(我还没有设置,后面有空了再来弄这个事)

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC5后台C#无法访问网络共享目录的解决办法 的相关文章

  • 2021-03-19

    输出 数字直角三角形 1 2 3 4 5 6 7 8 9 10 11 12 可根据需要增加行数 public class trangle 64 param args public static void main String args T
  • 2021-03-19

    switch语句实现成绩选择 注意强制转换 import java util Scanner public class Grade Switch 64 param args public static void main String ar
  • 2021-04-03

    Java代码 importjava util Scanner public classTest public static voidmain String args p br Scanner scan 61 newScanner Syste
  • 2021年寒假

    2022年1月4日 周二 雨雪 主要内容 xff1a 测试学校周雄短路的板子 xff0c 焊接新板子 上午11 00开始 xff0c 首先准备好电源 xff0c 热风枪 xff0c 前一天晚上已经改完的板子 第一次上电 测得最终输出5v 1
  • JavaScript 异步编程

    异步的概念 异步 xff08 Asynchronous async xff09 是与同步 xff08 Synchronous sync xff09 相对的概念 在我们学习的传统单线程编程中 xff0c 程序的运行是同步的 xff08 同步不
  • InnoDB引擎--存储结构与文件

    数据库是数据的集合 xff0c 数据库管理系统 xff08 DBMS xff09 是操作和管理数据库的应用程序 数据库应用主要有两类 xff1a OLAP xff08 联机分析处理 xff09 和OLTP xff08 联机事务处理 xff0
  • conda安装包出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url问题

    win10本地利用conda install package时出现的问题 Fetching package metadata CondaHTTPError HTTP 000 CONNECTION FAILED for url lt http
  • NVM 切换Node版本不成功(nvm提示成功,实际Node版本未切换)

    一 背景 xff1a 因为接手了一个旧项目 xff0c node依赖版本对应不上 xff0c 于是想到用NVM切换下对应版本 xff0c 二 问题 xff1a xff08 先安装Node xff0c 后安装Nvm下 xff09 由于以前就安
  • STM32F103C8T6读取气压计MS5611,I2C读取模式

    笔者最近想用气压计模块来测一下相对高度 xff0c 使用的元器件如下图所示 所使用的最小系统板 所使用的气压计模块 其实读取还是蛮简单的 xff0c 根据核心板引脚图选择I2c接口 xff0c 然后借鉴正点原子的模拟i2c程序 xff0c
  • Linux(Ubuntu20.04)安装JDK

    简单易懂 xff0c 小学生都学会了 xff01 操作系统 xff1a Windows11 子系统 xff1a Linux xff08 Ubuntu20 04 xff09 JDK版本 xff1a openjdk8 前言 最近手痒了 xff0
  • Spring自定义AOP

    我们在学习Spring的时候 xff0c 总是会看到Spring对于AOP的支持 xff0c 这同IOC一起 xff0c 属于Spring的两大核心 既然是核心 xff0c 这AOP又有哪些应用场景呢 xff1f 相信很多小伙伴都知道 xf
  • Spring Boot全局异常处理

    前言 全局异常处理可以帮助我们拦截接口的报错 xff0c 返回调用方友好的提示 xff0c 提高了用户体验的同时 xff0c 还为我们排查异常提供了便利 那么如何定义一个全局异常处理呢 xff1f 它又是怎样帮助我们处理异常 xff0c 并
  • MySQL查询JSON字段匹配

    前言 MySQL从5 7版本开始 xff0c 引入了JSON类型字段 xff0c 这使我们可以在MySQL数据库中存储JSON格式的数据 xff0c 并保留其对象格式 xff0c 再也不用转成字符串类型保存了 xff0c 减少了许多字符串类
  • 常用的conda命令

    目录 一 conda vs pip 二 conda命令 1 conda list 2 conda install 3 conda remove 4 conda update 5 conda create 6 conda config 7 c
  • 借助ChatGPT编写html小程序

    在数值模拟过程中 xff0c 经常需要反复计算一些参数 xff0c 例如常见的无量纲参数雷诺数和瑞利数等 它们的表达式如下 xff1a R a 61 g
  • 云数据库MySQL的选择

    架构介绍 xff1a 云数据库MySQL支持四种架构 xff1a 高可用版 金融版 单节点高IO版 基础版 其中单节点高IO版的只用于只读 版本对比 xff1a 企业级别 xff0c 刚刚好公司没有自己的服务器机房的时候可以做对比选择 一般
  • 查遍全网目前最有效解决办法:Module build failed: BrowserslistError: Unknown browser query `dead`

    今天偶然间项目编译打不开了 xff0c 满篇如下错误 xff0c 网上找遍让配置一点用没得卡球一天找遍全网 xff0c 方案都无效都是配置browserslist browserslist 34 34 production 34 34 gt
  • 使用Win32 Disk Imager烧录镜像到U盘

    使用Win32 Disk Imager烧录镜像到U盘 Win32 Disk Imager是一款非常好用的Win32 磁盘映像工具 利用这款工具 xff0c 我们可以把img文件快速写入到U盘 SD卡等USB设备中 xff0c 并且它不会改变
  • js响应事件的阶段,捕获阶段,冒泡阶段

    当鼠标点击所看到的的按钮时 xff0c 其实发生了一系列的事件传递 xff0c 可以想象一下 xff0c button实际上是被body 包裹 起来的 xff0c body是被html 包裹 起来的 xff0c html是被document

随机推荐