Web服务中的CreateDirectory在远程服务器上失败

时间:2013-08-24 22:29:33

标签: c# asp.net web-services user-permissions create-directory

远程导航到应用程序时,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是         

当它工作时,它在路径中使用或不使用“〜/”。当它不起作用时,它是相同的,有或没有,它将无法工作。

0 个答案:

没有答案