最近有个项目ASP.NET的项目,要读写一个局域网里的共享文件夹上的文件,记录如下:

1、访问共享文件

在这里我定义了一个方法,SaveFileExist(filesrc,filename),这个方法的主要功能就是查看这个我传入的以filename为文件名的文件是否存在与我的filesrc路径之下,当然filesrc就是我的共享文件路径。

格式如: \\10.3.2.113\\test\\test

        /// <summary>
/// 查找指定路径的共享文件是否存在
/// </summary>
/// <param name="url"></param>
/// <param name="filename"></param>
/// <returns></returns>
private string SelfFileExist(string url,string filename)
{
try
{
DirectoryInfo di = new DirectoryInfo(url);
//找到该目录下的文件
FileInfo[] fis = di.GetFiles();
foreach (FileInfo fi in fis)
{
if (fi.Name.Substring(,fi.Name.LastIndexOf('.')) == filename)
{
return fi.Name;
}
}
return "";
}
catch(Exception e)
{
return "";
}
}

该方法返回的fi.Name是带有后缀名称的文件名,我这儿只是遍历一下文件路径下的文件而已,直接查看文件存不存在,或直接对文件名判断,也就是:File.Exists(filePath)

 

以上的访问在本地vs里面运行的时候是可以的(前提是你的电脑能够访问这个共享地址哈)。但是呢,这个程序发布到 IIS 上面就不是那么的尽人意了,

不管是 Directory.Exists(dirPath)还是File.Exists(filePath),都是返回false,并且创建失败,

System.UnauthorizedAccessException: Access to the path '\\192.168.1.181\Share\Cares.S1.MVC' is denied.
at System.IO.FileSystem.CreateDirectory(String fullPath)
at System.IO.Directory.CreateDirectory(String path)
at Cares.S1.Data.Common.FileHelper.CreatDirectory(String dirPath) in D:\_john\Work\SVN\.........

经过网上搜索出来了很多的解决方案,在这结合自己的成功经历说明一下。如下:

2、IIS上访问共享文件夹或文件

不知道还有没有别得办法,在这里我说明下我的实现方式。具体如下:

举个例子:两台服务器A,B。A是文件服务器,B是网站所在的服务器,那么在A服务器上设置文件共享是必须的吧。

(1)这A服务器上设置共享的时候咱设置了一个访问共享的账号密码---->测试:在B服务器上可以通过  \\IP\文件夹路径  这个方式访问,输入正确的用户名和密码可以正常打开目录或文件

(2)然后在B服务器上也创建相同的帐户和密码(谨记,必须!),在发布的web应用网站上,点击对应的程序池里面,右键程序池->高级设置->点击 进程模型下面的标识后面的按钮。

在弹出的对话框中,选择自定义帐户,点击设置按钮,添加刚才设置的账号密码,最后全部点击确定按钮。

(3)在站点对应的目录中找到web.config文件,并在里面设置:

  <system.web>
<!--<identity impersonate="true"/>-->
<identity impersonate="true" userName="您的账号" password="您的密码" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
这样基本OK了,我也想上传图片,但是公司网不允许上传。。。。。所以在这里有一个网址:https://www.cnblogs.com/lonelyxmas/p/7996323.html
里面就是这些操作,对于创建共享文件夹的第2步:来到172.18.5.61,B服务器,打开我的电脑,在空白处右击,添加网路位置”用不着操作。。。 

出处:https://blog.csdn.net/qq_24266485/article/details/80756947

======================================================================

我们公司是使用的 ASP.NET Core MVC 结构,在项目发布到站点的时候也有同样的问题。使用的是.net core 2.2版本。

总结参考上面的说法:1)在A和B服务器上创建相同的用户名和密码。2)共享目录要有读写权限。3)只在iis的程序池中设置了用户名和密码

我并没有再设置web.config文件,也许.net core的项目和普通的asp.net项目有所不同吧。

asp.net 访问局域网共享文件的更多相关文章

  1. win10无法访问局域网共享文件?解决如此简单。。。。。

    1 笔记本系统win10 X64企业版,其中一文件夹已设置为“共享”.本地帐号登录系统. 2 平板电脑系统win8.1 X64专业版,可以顺畅的访问笔记本的共享文件.微软帐号登录系统. 3 平板电脑系 ...

  2. win10无法访问局域网共享文件?(因微软账户和本地账户登陆问题导致)

    1 笔记本系统win10 X64企业版,其中一文件夹已设置为“共享”.本地帐号登录系统. 2 平板电脑系统win8.1 X64专业版,可以顺畅的访问笔记本的共享文件.微软帐号登录系统. 3 平板电脑系 ...

  3. windows 访问局域网共享文件

    直接在浏览器或资源管理器输入路径就OK file://10.16.73.129/FinTech/soft

  4. asp.net SimpleImpersonation使用身份模拟访问局域网共享目录

    mvc中默认账户的权限很低,缺省情况下,ASP.NET应用程序以本机的ASPNET帐号运行,该帐号属于普通用户组,权限受到一定的限制,以保障ASP.NET应用程序运行的安全.但是有时需要某个ASP.N ...

  5. 实战ASP.NET访问共享文件夹(含详细操作步骤)

    博客园找找看(http://zzk.cnblogs.com)的索引文件占用空间太大,需要移至另外一台服务器,所以要解决"在ASP.NET中通过共享文件夹访问索引文件"的问题. 假设 ...

  6. IIS/ASP.NET访问共享文件夹的可用方式

    [截止2014-10-14] 网上搜索了很多篇文章,所提及的总共有两种方式: 1.Asp.Net模拟登陆: 例如: 实战ASP.NET访问共享文件夹(含详细操作步骤) 实现一个2008serve的II ...

  7. Windows无法访问局域网内共享文件夹[0x800704cf,0x80070035]解决方案

    Windows7系统突然无法访问访问其他windows机器的共享文件夹,出现0x800704cf或者0x80070035错误: 解决方案如下两张图,配置与下面两张图为准,即可解决: 1:window+ ...

  8. Mac OS X 访问 Windows 共享文件夹

    Mac OS X 访问 Windows 共享文件夹 mac没有网络邻居,但可以使用finder访问局域网中windows共享的文件 1.点击 Finder 前往菜单中的「前往服务器」(或快捷键 com ...

  9. 用CentOS,fedora等访问局域网中的Windows共享

    来到Linux世界中已有一段时间了,感觉上好像自己的电脑成了一个孤岛.周围的人都还是用Windows系统,能相互共享文件,我用Linux系统,别人的共享文件都还不知道怎么访问?通过网上查资料学习,现在 ...

随机推荐

  1. React全家桶+Material-ui构建的后台管理系统

    一.简介 一个使用React全家桶(react-router-dom,redux,redux-actions,redux-saga,reselect)+Material-ui构建的后来管理中心. 二. ...

  2. 【miscellaneous】【C/C++语言】UTF8与GBK字符编码之间的相互转换

    UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值." ...

  3. Redis Sentinel分布式集群

    helm部署Redis哨兵分布式集群 Redis Sentinel集群 介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客 ...

  4. mybatis一级二级缓存

    一级缓存分析 不需要任何配置 ,mybatis本身带有 一级缓存是SqlSession范围的缓存,当调用SqlSession的修改,添加,删除,commit(),close()等方法时,就会清空一级缓 ...

  5. Shadowing of static functions in Java

    class A { static void fun() { System.out.println("A.fun()"); } } class B extends A { stati ...

  6. my97整合fineui例子,开始和结束时间

      <f: Toolbar runat ="server">                             <Items>             ...

  7. [转帖]从0开始的高并发(一)--- Zookeeper的基础概念

    从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...

  8. Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activate 'xxxxx.Controllers.xxxxController'.

    Unable to resolve service for type 'Microsoft.Extensions.Logging.ILogger' while attempting to activa ...

  9. STC单片机Flash做EEPROM的代码

    STC官方给出的建议: /***************************************************************Author:Liming*** * @brie ...

  10. 配置linux命令行界面的 文件显示颜色

    在linux命令行界面下使用ls命令时,有时会看见显示的文件会有不同的颜色,因为linux的文件没有后缀名这个概念(Windows系统中的文件会有后缀名,从而可以将文件标识为不同类型),显示不同的颜色 ...