【问题标题】:C# Access to path on another computer deniedC#访问另一台计算机上的路径被拒绝
【发布时间】:2016-12-10 09:51:00
【问题描述】:

我目前正在开发 Web Api 2 项目。 我正在使用的方法是上传图片方法。

这是我的代码:

    public IHttpActionResult Upload()
    {
        string UserID = "12345";

        // LOCAL VARIABLE
        dynamic ExpObj = new ExpandoObject();

    // Virtual Directory Located on My Computer
        var FilePath = HttpContext.Current.Server.MapPath("/Images");

    // Virtual Directory Located on Another Computer (Located on LAN Network)
        var FilePath2 = HttpContext.Current.Server.MapPath("/tes2");

        if (HttpRequest.Files.Count > 0)
        {
            foreach (string file in HttpRequest.Files)
            {
                // GET UPLOADED IMAGE
                var PostedFile = HttpRequest.Files[file];

                // SET FILE NAME ( USERID + Right(FileName,10) )
                string FileName = GetFileName(UserID, PostedFile.FileName, 10);

                // SAVE IMAGE
                //PostedFile.SaveAs(FilePath + FileName);
                string ImagePath = Path.Combine(FilePath, FileName);
                string ImagePath2 = Path.Combine(FilePath2, FileName);

                PostedFile.SaveAs(ImagePath2);
                File.Copy(ImagePath2, ImagePath);

                ExpObj.imageURL = ServerUrl + ServerPath + FileName;
            }
        }
        else
        {
            ErrCode = -900;
        }

        // RETURN IF GOT ERROR
        if (ErrCode < 0)
        {
            return StatusCode((HttpStatusCode)(ErrCode * (-1)));
        }

        // RETURN
        return Ok(ExpObj);
    }

我的方法是,它使用多部分表单数据在 API 中接收图像作为输入,并将其上传到服务器上。 我使用的目录是一个虚拟目录

"/Images" = "\\192.168.12.28\共享文件夹\PIJ 共享"

"/tes2" = "C:\Dummy"

当我尝试将其上传到我自己的计算机时,它可以正常工作,但是当我尝试将其上传到另一台计算机时,它会出现此错误。

Access to the path denied error

这是我试图解决的问题:

  1. 以管理员身份打开 Visual Studio 2013

  2. 在指定文件夹(NETWORK SERVICE、IIS_IUSR、pij.api(我的应用程序池的名称)、DefaultAppPool、Everyone)上添加权限。我已授予每个用户读/写权限。

这些都不起作用。我还尝试使用文件资源管理器将图像文件添加到“\192.168.12.28\Share Folder\PIJ Share”。它有效。 我该怎么办?

非常感谢。

更新 (1.1)

我尝试在没有 IIS 的情况下执行代码(在 Visual Studio 2013 上使用 localhost)并且文件成功上传。但是当我使用 IIS (http://api.pijmobile.local/) 执行它时,我得到了 Access to the path denied 错误。

看来问题出在 IIS 设置上。仍在寻找答案。

【问题讨论】:

  • is "/Images" = "\192.168.12.28\Share Folder\PIJ Share" 应该读取 \\192.168.12.28 .. 例如它在机器上的共享 - 你的 ISS 运行的是什么,因为它无法访问该共享.. 几乎可以肯定
  • 我的 IIS 目前作为 ApplicationPoolIdentity (pij.api) 运行。而且我已将其添加为权限中的用户,但它仍然无法正常工作。我还尝试将我的 IIS 更改为作为网络服务运行并将其添加为用户。还是不行
  • 您是将其添加到共享中还是仅添加到文件夹中?
  • 我为 DefaultAppPool 和 pij.api(我当前的应用程序池)添加了“共享文件夹”和“PIJ 共享”权限。它仍然给出同样的错误
  • 那么192.168.12.28和iis服务器一样吗?

标签: c# iis asp.net-web-api2 httprequest multipartform-data


【解决方案1】:

经过几天的研究,我终于找到了答案。看完this link。这些是我完成的步骤:

  1. 在我的计算机和远程服务器中创建用户(控制面板 > 管理员工具 > 计算机管理 > 在计算机管理中展开树“本地用户和组”> 右键单击​​用户 > 新用户)

  2. 填写用户名和密码

  3. 打开 Internet 信息服务 (IIS) 管理器,展开您的计算机名称,单击应用程序池

  4. 右键单击您的网站应用程序池 > 高级设置
  5. 在“高级设置”窗口中,单击身份旁边的 ...
  6. 选择自定义账户 > 点击设置
  7. 插入您之前设置的用户和密码 > OK > OK > OK

  1. 就是这样,您将能够访问网络共享并查看它。

【讨论】:

    猜你喜欢
    • 2021-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 2016-11-11
    相关资源
    最近更新 更多