asp.net 访问局域网共享文件
Posted mq0036
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net 访问局域网共享文件相关的知识,希望对你有一定的参考价值。
最近有个项目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(0,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>
出处: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 访问局域网共享文件的主要内容,如果未能解决你的问题,请参考以下文章
如何修复访问被拒绝路径错误asp.net应用程序访问网络共享