title: Why doesn't IIS release files on the server?
body: <p>I have ASP.NET Web Forms application for fill e-warranty pdf. When I open file for first time and fill filds everything is OK. But if I want to open file again and fill it, throw me exception on <code>File.WriteAllBytes(pdfDirectory, pdfContent);</code>:</p>
  
  <blockquote>
    <p>System.IO.IOException: The process cannot access the file '...\AllWarranties\2016\2\000101.pdf' because it is being used by another process.</p>
  </blockquote>
  
  <p>If I open another file, make changes on them, and return to first one then dont'throw me exception.</p>
  
  <p>Why doesn't IIS release files on the server? On local machine works perfect.</p>
  
  <p><strong>Code</strong></p>
  
  <pre><code>string pdfDirectory = @"C:\Projects\Amco\EWarranty\EWarranty" + currentFilePath.FilePath;
  MemoryStream inputMemoryStream = new MemoryStream();
  
  using (FileStream fs = File.OpenRead(pdfDirectory))
  {
      inputMemoryStream.SetLength(fs.Length);
      fs.Read(inputMemoryStream.GetBuffer(), 0, (int)fs.Length);
      inputMemoryStream.Seek(0, SeekOrigin.Begin);
  }
  
  PdfReader pdfReader = new PdfReader(inputMemoryStream);
  using (Stream inputImageStream = new FileStream(@"C:\Projects\Amco\EWarranty\pechatAMCO.png", FileMode.Open, FileAccess.Read, FileShare.Read))
  using (MemoryStream outputStream = new MemoryStream())
  {
      using (PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream))
      {
          if (currentServiceMap.FailureNumber == 0)
          {
              var pdfContentByte = pdfStamper.GetOverContent(3);
              Image image = Image.GetInstance(inputImageStream);
              image.ScaleToFit(150, 150);
              image.SetAbsolutePosition(140, 425);
              pdfContentByte.AddImage(image);
          }
  
          // Some other else if statements ...
  
          AcroFields pdfFormFields = pdfStamper.AcroFields;
          BaseFont cyrillicFont = BaseFont.CreateFont(@"C:\Windows\Fonts\Arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
          pdfFormFields.AddSubstitutionFont(cyrillicFont);
  
          // first fail
          if (txt_First_Adoption_Date.Text != "")
          {
              pdfFormFields.SetField("firstAdoptionDate", txt_First_Adoption_Date.Text);
          }
  
          if (txt_First_Failure.Text != "")
          {
              pdfFormFields.SetField("firstFailure", txt_First_Failure.Text);
          }
  
          if (txt_First_Return_Date.Text != "")
          {
              pdfFormFields.SetField("firstReturnDate", txt_First_Return_Date.Text);
          }
  
          // Second, third and so on failds ...
  
              warrantyService.UpdateServiceMapByAdmin(CurrentSessions.warrantyNumber, txt_First_Adoption_Date.Text, txt_First_Failure.Text, "", txt_First_Return_Date.Text, txt_Second_Adoption_Date.Text, txt_Second_Failure.Text,
                                                          "", txt_Second_Return_Date.Text, txt_Third_Adoption_Date.Text, txt_Third_Failure.Text, "", txt_Third_Return_Date.Text, txt_Fourth_Adoption_Date.Text, txt_Fourth_Failure.Text,
                                                          "", txt_Fourth_Return_Date.Text, txt_Fifth_Adoption_Date.Text, txt_Fifth_Failure.Text, "", txt_Fifth_Return_Date.Text, (currentServiceMap.FailureNumber + 1));
  
          pdfStamper.FormFlattening = false;
      }
  
      byte[] pdfContent = outputStream.ToArray();
      File.WriteAllBytes(pdfDirectory, pdfContent);
  }
  
  pdfReader.Close();
  inputMemoryStream.Close();
  </code></pre>