Asp.net IIS和共享内存下的web服务asmx

Asp.net IIS和共享内存下的web服务asmx,asp.net,web-services,winapi,iis,shared-memory,Asp.net,Web Services,Winapi,Iis,Shared Memory,我有一个windows控制台应用程序,它使用共享内存与其他进程通信,我需要从同一台计算机上托管的web服务与此进程共享数据 当我使用VisualStudioDevelopmentServer时,一切正常,但当我尝试在IIS 6.1下从web服务应用程序打开内存映射文件时,出现了“文件未找到”错误(代码2) 这些都是创建和打开内存映射文件的函数,我认为IIS使用不同的内存空间,有可能吗 [DllImport("kernel32.dll", SetLastError = true, CharSet

我有一个windows控制台应用程序,它使用共享内存与其他进程通信,我需要从同一台计算机上托管的web服务与此进程共享数据

当我使用VisualStudioDevelopmentServer时,一切正常,但当我尝试在IIS 6.1下从web服务应用程序打开内存映射文件时,出现了“文件未找到”错误(代码2)

这些都是创建和打开内存映射文件的函数,我认为IIS使用不同的内存空间,有可能吗

[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
    static extern IntPtr CreateFileMapping(IntPtr hFile, IntPtr lpFileMappingAttributes, FileMapProtection flProtect, uint dwMaximumSizeHigh, uint dwMaximumSizeLow, [MarshalAs(UnmanagedType.LPTStr)] string lpName);
    [DllImport("kernel32.dll", SetLastError = true)]
    static extern IntPtr OpenFileMapping(uint dwDesiredAccess, bool bInheritHandle, string lpName);
使用Process Explorer,我可以看到控制台应用程序在以下位置正确创建内存映射文件:

\Sessions\1\BaseNamedObjects\filemapname
当web服务在VisualStudioDevelopmentServer中运行时,我有相同的路径,但在IIS下运行时,我看不到任何路径。如果我在“OpenFileMapping”之后运行“GETLASTERROR”函数,我的错误代码为2,这意味着找不到文件

编辑:

读到一些类似的问题,我尝试在控制台应用程序中将内存映射文件重命名为“Global\filemapname”,现在IIS下的Web服务可以读取此文件,但现在我有错误访问被拒绝,所以我认为IIS进程需要更多特权

我尝试修改一些IIS选项,当将DefaultAppPool的标识(默认为ApplicationPoolIdentity)更改为计算机的管理员用户时,我获胜

使用此设置应用程序在IIS下运行良好,但这可能不是更好、更干净的解决方案。有什么建议吗