Otwarcie pliku mapowanego pamięci powoduje wyjątek FileNotFoundException podczas wdrażania w IIS
Podążając za przykładem kodu zto stworzyłem aplikację konsoli Windows, która tworzy zmapowany plik pamięci:
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();
}
w nowej aplikacji internetowej asp.net czytam MMF za pomocą kodu:
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);
}
W rozwoju IIS Express plik jest odczytywany zgodnie z oczekiwaniami, a strona wyświetla dane z zmapowanego pliku pamięci.
Jednak po wdrożeniu w usługach IIS otrzymuję wyjątekSystem.IO.FileNotFoundException
w miejscuMemoryMappedFile.OpenExisting("myFile")
Próbowałem zmienić tożsamość puli aplikacji na identyczną z tą, która uruchamia aplikację konsoli MMF, ale to nie zadziałało.