FileStream nie może uzyskać dostępu do pliku, ponieważ jest używany przez inny proces

Jestem nowym użytkownikiem aplikacji internetowej w ASP.NET i natknąłem się na ten problem.

Mam stronę, na której znajduje się przycisk do pobrania template.xls, który był wcześniej przechowywany na stronie SharePoint. Mam metodę pobierania i działa dobrze. Omawiany szablon jest zapisywany w miejscu, w którym powinien się znajdować, w folderze, w którym znajduje się moja aplikacja internetowa, na moim lokalnym IIS. Problem polega na otwarciu tego pliku dla użytkownika końcowego. Potrzebuję wyskakującego okienka do wyświetlenia użytkownikowi, aby mógł otworzyć / zapisać ten szablon.xls Używam następujących:

//path on my local IIS where the file is located after the download
string _strFolderApp = "~/Arq/";
string _strFullFolderApp = _strFolderApp + _strFileName;
string apPath = System.Web.Hosting.HostingEnvironment.MapPath(_strFullFolderApp);

FileStream _FileStream = new FileStream(apPath, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
// Writes a block of bytes to this stream using data from a byte array.
_FileStream.Write(_contentFile, 0, _contentFile.Length);

//opens the file
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=" + _strFileName);
Response.ContentType = "";
Response.TransmitFile(apPath);
Response.Flush();
File.Delete(apPath);
Response.End();
# endregion

// close file stream
_FileStream.Close();

Przeszukałem online i wszystkie odpowiedzi kończą się na użyciu FileShare.ReadWrite, aby oba procesy działały poprawnie. Ale to nie działa dla mnie, ponieważ gdy kod sięgaResponse.TransmitFile (apPath); Otrzymuję wyjątek, a popup nie jest wyświetlany. Wyjątek:

Proces nie może uzyskać dostępu do pliku 'c :etpub wwwroot MyWebApp Plik TemplateSharePoint.xlsx', ponieważ jest używany przez inny proces.

Proszę o pomoc:

EDYTOWAĆ Aktualizacja kodu

if (_flgSPSDownload)
        {
            System.IO.FileStream _FileStream = new System.IO.FileStream(apPath,System.IO.FileMode.Create, System.IO.FileAccess.Write);
            _FileStream.Write(_contentFile, 0, _contentFile.Length);
            _FileStream.Close();


            Response.Clear();
            Response.AddHeader("content-disposition", "attachment; filename=" + _strFileName);
            //Set the appropriate ContentType.
            Response.ContentType = "Application/x-msexcel";
            Response.TransmitFile(apPath);
            Response.Flush();
            //Write the file directly to the HTTP content output stream.
            Response.WriteFile(apPath);
            //File.Delete(apPath);

            //Process.Start(_strDestinationPath + "//" + _strFileName);

questionAnswers(2)

yourAnswerToTheQuestion