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>

 

这样基本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 访问局域网共享文件的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET 从受密码保护的网络共享中读取文件

如何修复访问被拒绝路径错误asp.net应用程序访问网络共享

java如何访问局域网共享文件?

ASP.net MVC 代码片段问题中的 Jqgrid 实现

为啥asp.net 网页在局域网里不能互访

ASP.NET访问网络映射盘&实现文件上传读取功能