1

我有一个从服务器获取文件并下载的程序。它本身位于服务器上,因此要运行它,请打开浏览器并输入带有参数的 URL。

现在,当程序位于我的机器上时,它运行得非常好。但是,当通过浏览器访问时,它似乎挂起。我试过 MessageBox.Show(username, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.ServiceNotification);

string[] lines = {"First line", "Second line", "Third line"};
        System.IO.File.WriteAllLines(@"C:\Users\Public\TestFolder\WriteLines.txt", lines);

当在服务器上完成时,这两个都会导致错误(但在我自己的机器上很好)。

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt"))
file.WriteLine("asfsd");

这似乎挂在写入行上,因为文件已创建但没有任何内容放入文件中。知道为什么会发生这种情况,或者我可以提出一些建议,以便我知道问题出在哪里?

4

3 回答 3

4

如果我不得不猜测。我说你没有权限。尝试将所有内容包装在 Impersonate 语句中或授予工作进程访问目录的权限。

using (new Impersonator(username, domain,password)) {
      using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt"))
      file.WriteLine("asfsd");
      }
 }

另外,在写入之前确保目录存在。

于 2012-07-11T13:17:32.943 回答
2

听起来您将 WinForms 开发与 ASP.NET 开发混合在一起,它们是两种截然不同的动物。

如果您在写入文件时遇到问题,则很可能是由权限问题引起的。IIS 默认应用程序池通常以 NETWORK SERVICE 用户身份运行,该用户很可能在您的目标目录中没有权限。

于 2012-07-11T13:18:29.517 回答
1

您正在尝试写入本地文件,而服务器上的 IIS 显然没有这样做的权限(真是令人惊讶 :-))。将文件保存在您的 webapp 文件夹中,而不是 C:\

于 2012-07-11T13:18:36.107 回答