title: System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
body: <p>Guys can some one tell me why i have such error ....</p>
  
  <pre><code>2013-08-11 18:44:28 - NPMessage: DEBUG: Dispatching a RPCStorageWriteUserFileMessage
  2013-08-11 18:44:28 - RPCStorageWriteUserFileMessage: INFO: Got a request for writing 8192 bytes to file iw4.stat for user alhpons.
  2013-08-11 18:44:28 - ProfileData: INFO: Handling profile update request for alhpons
  2013-08-11 18:44:28 - ProfileData: ERROR: Exception: System.IO.IOException: The process cannot access the file 'D:\IW4M\NpServer\data\priv2\00\000\alhpons\iw4.stat' because it is being used by another process.
     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, Boolean useLongPath)
     at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
     at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
     at System.IO.File.ReadAllBytes(String path)
     at NPx.ProfileData.Handle(UpdateRequest request)
     at NPx.ProfileData.Run()
  </code></pre>
  
  <p>Edit:</p>
  
  <p>i use my App on windows server 2008 and some files need to read / write permission for my application but i have such error so i need to fix that problem and my source is:</p>
  
  <pre><code>public override void Process(NPHandler client)
      {
          var fileName = Message.fileName;
          var fileData = Message.fileData;
          var npid = (long)Message.npid;
          var fsFile = StorageUtils.GetFilename(fileName, npid);
  
          _client = client;
          _fileName = fileName;
          _npid = npid;
  
          if (!client.Authenticated)
          {
              ReplyWithError(1);
              return;
          }
  
          if (client.NPID != (long)npid)
          {
              ReplyWithError(1);
              return;
          }
  
          if (!Directory.Exists(Path.GetDirectoryName(fsFile)))
          {
              Directory.CreateDirectory(Path.GetDirectoryName(fsFile));
          }
  
          // are we allowed to write this type of file?
          if (!_fileHooks.ContainsKey(fileName))
          {
              ReplyWithError(1);
              return;
          }
  
          string backupFile = null;
  
          int result = _fileHooks[fileName](fileData, fsFile, out backupFile);
  
          if (result &gt; 0)
          {
              ReplyWithError(result);
              return;
          }
  
          Log.Info(string.Format("Got a request for writing {0} bytes to file {1} for user {2}.", fileData.Length, fileName, npid.ToString("X16")));
  
          try
          {
              var stream = File.Open(fsFile, FileMode.Create, FileAccess.Write);
  
              stream.BeginWrite(fileData, 0, fileData.Length, WriteCompleted, stream);
  
              if (backupFile != null)
              {
                  var backupStream = File.Open(backupFile, FileMode.Create, FileAccess.Write);
  
                  backupStream.BeginWrite(fileData, 0, fileData.Length, BackupWriteCompleted, backupStream);
              }
          }
          catch (Exception ex)
          {
              Log.Error(ex.ToString());
              ReplyWithError(2);
          }
      }
  </code></pre>