最近有个项目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项目有所不同吧。

最新文章

  1. 使EditText不要在页面打开时自动获取焦点(因为软键盘会自动弹出)
  2. iOS UITableView行高自行扩展
  3. android 网络通讯
  4. 年前辞职-WCF入门(6)
  5. mysql一些常用命令总结
  6. 团队项目开发中,常见的版本控制有svn,git
  7. 使用shell从DB2数据库导出数据
  8. centos yum安装mysql
  9. Java编程思想(2)之一切皆对象
  10. 通过例子学python(2.2)
  11. oracle转mysql总结(转)
  12. delphi中panel控件应用
  13. iOS绘图框架CoreGraphics分析
  14. &lt;TCP/IP原理&gt; (二) OSI模型和TCP/IP协议族
  15. Placement of class definition and prototype
  16. python报错问题解决:&#39;ascii&#39; codec can&#39;t encode character
  17. FFmpeg简易播放器的实现-音视频同步
  18. [日常] PHP与Mysql测试kill慢查询并检验PDO的错误模式
  19. 记一次eslint规则配置
  20. Linux安装Nginx1.7.4、php5.5.15和配置

热门文章

  1. 【视频开发】opencv不能读取MP4格式文件
  2. netty例子-客户端每隔5秒发送查询时间的请求,服务器端响应请求
  3. Eclipse项目上传和下载到码云上
  4. kafka 如何保证数据不丢失
  5. PHP中YUM的理解
  6. linux 挂载新的硬盘
  7. elasticsearch插件
  8. 属性动画 补间动画 帧动画 基本使用案例 MD
  9. MVC学习笔记(二)—用EF创建数据库
  10. DbParameter关于Like查询的传参数无效问题