【发布时间】: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
这是我试图解决的问题:
以管理员身份打开 Visual Studio 2013
在指定文件夹(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