1

远程导航到应用程序时,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 中应用程序文件夹的修改权限分配给“NETWORK SERVICE”,即使我确信不必要地分配给“IIS_IUSRS”、“IUSR”、“LOCAL SERVICE”、“NETWORK”,但没有任何帮助!当我正常导航到它时,我只是不断获得状态 500。但是一旦我给它“网络服务”修改权限,它就一直在本地工作,如上所述。

在为 wwwroot 中的应用程序文件夹上的“网络服务”分配修改权限后,在同一服务器上的代码隐藏中发布带有按钮和 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 是

当它工作时,它可以在路径中使用或不使用“~/”。当它不起作用时,它是一样的,不管有没有,它都不会起作用。

4

0 回答 0