Abrir um arquivo de memória mapeada faz com que FileNotFoundException quando implantado no IIS
Seguindo o exemplo de código deisto site, eu criei um aplicativo de console do Windows que cria um arquivo de memória mapeada:
using (var file = MemoryMappedFile.CreateNew("myFile", 24))
{
var bytes = new byte[24];
for (var i = 0; i < bytes.Length; i++)
bytes[i] = (byte)(65 + i);
using (var writer = file.CreateViewAccessor(0, bytes.Length))
{
writer.WriteArray<byte>(0, bytes, 0, bytes.Length);
}
Console.WriteLine("Run memory mapped file reader before exit");
Console.WriteLine("Press any key to exit ...");
Console.ReadLine();
}
em um novo aplicativo da web asp.net eu li o arquivo MMF usando o código:
protected void Page_Load(object sender, EventArgs e)
{
string sOutput = "";
using (var file = MemoryMappedFile.OpenExisting("myFile"))
{
using (var reader = file.CreateViewAccessor(0, 24))
{
var bytes = new byte[24];
reader.ReadArray<byte>(0, bytes, 0, bytes.Length);
for (var i = 0; i < bytes.Length; i++)
sOutput += (char)bytes[i] + " ";
}
}
Response.Write(sOutput);
}
No desenvolvimento do IIS Express, o arquivo é lido como esperado e a página exibe os dados do arquivo de memória mapeada.
No entanto, quando implantado no IIS, recebo a exceçãoSystem.IO.FileNotFoundException
no localMemoryMappedFile.OpenExisting("myFile")
Eu tentei alterar a identidade do pool de aplicativos para o mesmo que o que está executando o aplicativo de console do MMF, mas isso não funcionou.