远程导航到应用程序时,System.IO.CreateDirectory或System.IO.File.Create将无法通过Web服务运行。它在本地工作。
环境: - .Net 4.5,Asp.Net,C# - VS 2012
远程: - Windows 08 R2 - IIS 7 - 应用程序池(.Net 4.0,集成)
过程:
Web服务在项目中,用于jQuery .ajax调用url:'Services.asmx / UploadFile'。 WS方法创建文件夹链(如果未找到)并写入文件。
文件上传在VS中本地完美正常。 当它在远程服务器上发布并通过localhost / {app}或http:// {ip} / {app}在服务器本地(通过RDC)导航到它时,它也可以正常工作。创建文件夹链并写入文件。
但是,在正常导航时它不起作用。
我很确定这是用户权限问题,但我已经用尽了所有选项。我已经将wwwroot中app文件夹的修改权限分配给了“NETWORK SERVICE”,即使我确定不必要地“IIS_IUSRS”,“IUSR”,“LOCAL SERVICE”,“NETWORK”,但没有人帮助过!当我正常导航时,我只是继续获得状态500。但是,一旦我给它“NETWORK SERVICE”修改权利,它就一直在本地工作。
在wwwroot的app文件夹中为“NETWORK SERVICE”分配修改权限后,使用按钮和同一服务器上代码隐藏的CreateDirectory发布基本测试应用程序。
Web服务中的创建目录代码是:
[WebMethod]
public void UploadFile()
{
string _userId = HttpContext.Current.Request.Form["userId"];
HttpPostedFile _file = HttpContext.Current.Request.Files["Filedata"];
string _uploadsFolder = Server.MapPath(String.Format(ConfigurationManager.AppSettings["FileUploadPath"], _userId, "Temp"));
if (!Directory.Exists(_uploadsFolder)) Directory.CreateDirectory(_uploadsFolder);
FileStream _fileStream = File.Create(Path.Combine(_uploadsFolder, _file.FileName));
_file.InputStream.CopyTo(_fileStream);
_fileStream.Close();
}
web.config中的FileUploadPath是
当它工作时,它在路径中使用或不使用“〜/”。当它不起作用时,它是相同的,有或没有,它将无法工作。