FileStream não pode acessar o arquivo porque está sendo usado por outro processo

Eu sou novo no aplicativo da web no asp.net e me deparei com esse problema.

Eu tenho uma página onde há um botão para baixar um template.xls que é armazenado anteriormente em uma página do SharePoint. Eu tenho o método de download e está funcionando muito bem. O modelo em questão está sendo salvo onde deveria estar, em uma pasta onde meu aplicativo da web está localizado, no meu IIS local. O problema é abrir este arquivo para o usuário final. Eu preciso de um pop-up para ser exibido para o usuário, então ele pode abrir / salvar este template.xls Eu estou usando o seguinte:

//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();

Eu procurei on-line e todas as respostas acabaram usando o FileShare.ReadWrite para que ambos os processos funcionassem corretamente. Mas não está funcionando para mim, porque quando o código chegaResponse.TransmitFile (apPath); Eu recebo uma exceção e o popup não aparece. Exceção:

O processo não pode acessar o arquivo 'c: \ inetpub \ wwwroot \ MyWebApp \ File \ TemplateSharePoint.xlsx' porque ele está sendo usado por outro processo.

Por favor, qualquer ajuda seria apreciada :)

EDITAR Atualização de código

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