zoukankan      html  css  js  c++  java
  • 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.181ShareCares.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:\_johnWorkSVN.........

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

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

  • 相关阅读:
    rabbitmq线上服务器与项目结合的问题总结
    关于RabbitMQ Queue Argument的简介
    rabbitmq代码配置
    python基础篇17-虚环境
    Java-实体与集合转换
    Java-精确计算工具类
    Java-汉字繁体拼音转换
    Java-集合条件筛选
    Java-发邮件
    Java-MD5
  • 原文地址:https://www.cnblogs.com/mq0036/p/10989571.html
Copyright © 2011-2022 走看看