将webservice部署为虚拟目录时的权限问题。适用于VS IDE

时间:2010-04-27 12:36:09

标签: asp.net impersonation permission-denied

我有一个ASP.NET Web服务,它将在路径中创建一个文本文件,该文件作为参数传递给该方法。

 private void CreateFile(string path)
 {
        string strFileName = path;
        StreamWriter sw = new StreamWriter(strFileName, true);
        sw.WriteLine("");
        sw.Write("Created at " + DateTime.Now.ToString());
        sw.Close();
 }

现在我将网络中的文件夹作为参数传递并调用方法

  CreateFile(@"\\192.168.0.40\\labels\\test.txt");

从Visual Studio IDE运行代码时,将在路径中创建该文件。但是当我发布这个并部署为虚拟目录时,它会给我一些错误,比如

   "System.UnauthorizedAccessException: Access to the path '\\192.168.0.40\labels\test.txt' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(String path, Boolean append)

我的<identity impersonate="true"/>中有web.config。我的机器在XP中运行,另一台在Windows Server 2003中。我为该文件夹的“任何人”设置了WRITE权限。

1 个答案:

答案 0 :(得分:1)

您的Web应用程序在本地aspnet用户帐户下运行,该帐户无权访问网络上的资源。如果IIS版本中有应用程序池,则必须使应用程序池用户成为可以访问网络资源的域用户。如果您没有应用程序池,则可以在web.config的processModel元素中更改Web用户。