MemoryMappedFile 在IIS与程序跨程序交互数据的权限问题

使用IIS 与程序交互时,发布到IIS上获取不到数据提供方的数据(VSF5运行可以获取到数据),MemoryMappefFile基本使用不做介绍

数据方

 static void Main(string[] args)
        {
            
            Run();
        }
        static Random random = new Random();
        private static MemoryMappedFile memoryFile;

        static void Run()
        {
            #region MyRegion

            
            var data = new List<PublishVariableValue>();
            //1
            data.Add(Factory("P631_HA2_Health"));
            data.Add(Factory("P143_HA2_LPHD1_Health"));
            data.Add(Factory("P631_HB2_Health"));
            data.Add(Factory("P143_HB2_LPHD1_Health"));
            data.Add(Factory("P3A109_Health"));
            data.Add(Factory("P3A108_Health"));
            data.Add(Factory("P3A107_Health"));
            //2
            data.Add(Factory("P3A106_Health"));
            data.Add(Factory("P3A105_Health"));
            data.Add(Factory("P3A104_Health"));
            data.Add(Factory("P3A103_Health"));
            data.Add(Factory("P3A102_Health"));
            data.Add(Factory("P3A101_Health"));
            data.Add(Factory("P3A202_Health"));
            data.Add(Factory("P3A203_Health"));
            data.Add(Factory("P3A204_Health"));
            data.Add(Factory("P3A205_Health"));
            data.Add(Factory("P3A206_Health"));
            data.Add(Factory("P3A207_Health"));
            data.Add(Factory("P3A208_Health"));
            data.Add(Factory("P3A209_Health"));
            //4
            data.Add(Factory("MV109_Health"));
            data.Add(Factory("MV108_Health"));
            data.Add(Factory("MV107_Health"));
            data.Add(Factory("MV106_Health"));
            data.Add(Factory("MV105_Health"));
            data.Add(Factory("MV104_Health"));
            data.Add(Factory("MV103_Health"));
            data.Add(Factory("MV101_Health"));
            data.Add(Factory("MV203_Health"));
            data.Add(Factory("MV204_Health"));
            data.Add(Factory("MV205_Health"));
            //5


            data.Add(Factory("MV209_Health"));
            data.Add(Factory("MV208_Health"));
            data.Add(Factory("MV207_Health"));
            data.Add(Factory("MV206_Health"));
            //6
            data.Add(Factory("LV03AN413_2_Health"));
            data.Add(Factory("LV03AN413_3_Health"));
            data.Add(Factory("LV03AN413_4_Health"));
            data.Add(Factory("LV03AN413_5_Health"));
            data.Add(Factory("LV03AN413_6_Health"));
            //7
            data.Add(Factory("LV03AN414_Health"));
            data.Add(Factory("LV03AN413_1_Health"));
            data.Add(Factory("LV03AN407_3_Health"));
            data.Add(Factory("LV03AN407_2_Health"));
            data.Add(Factory("LV03AN407_1_Health"));
            //8
            data.Add(Factory("LV03AN401_Health"));
            data.Add(Factory("LV03AN402_Health"));
            data.Add(Factory("LV03AN403_Health"));
            data.Add(Factory("LV03AN404_Health"));
            data.Add(Factory("LV03AN406_1_Health"));
            data.Add(Factory("LV03AN406_2_Health"));
            data.Add(Factory("LV03AN406_3_Health"));
            data.Add(Factory("LV03AN406_4_Health"));
            data.Add(Factory("LV03AN406_5_Health"));
            data.Add(Factory("LV03AN406_6_Health"));
            //9
            data.Add(Factory("LV03AN416_1_Health"));
            data.Add(Factory("LV03AN416_2_Health"));
            data.Add(Factory("LV03AN416_3_Health"));
            data.Add(Factory("LV03AN416_4_Health"));
            data.Add(Factory("LV03AN417_1_Health"));
            data.Add(Factory("LV03AN417_2_Health"));
            data.Add(Factory("LV03AN417_3_Health"));
            data.Add(Factory("LV03AN417_4_Health"));
            data.Add(Factory("LV03AN418_1_Health"));
            data.Add(Factory("LV03AN418_2_Health"));
            data.Add(Factory("LV03AN418_3_Health"));
            //10
            data.Add(Factory("LV03AN419_7_Health"));
            data.Add(Factory("LV03AN419_6_Health"));
            data.Add(Factory("LV03AN419_5_Health"));
            data.Add(Factory("LV03AN419_4_Health"));
            data.Add(Factory("LV03AN419_3_Health"));
            data.Add(Factory("LV03AN419_2_Health"));
            data.Add(Factory("LV03AN419_1_Health"));
            data.Add(Factory("LV03AN418_7_Health"));
            data.Add(Factory("LV03AN418_6_Health"));
            data.Add(Factory("LV03AN418_5_Health"));
            data.Add(Factory("LV03AN418_4_Health"));
            //11
            data.Add(Factory("LV03AN306_9_Health"));
            data.Add(Factory("LV03AN306_8_Health"));
            data.Add(Factory("LV03AN306_7_Health"));
            //12
            data.Add(Factory("LV03AN301_Health"));
            data.Add(Factory("LV03AN302_Health"));
            data.Add(Factory("LV03AN303_Health"));
            data.Add(Factory("LV03AN304_Health"));
            data.Add(Factory("LV03AN306_1_Health"));
            data.Add(Factory("LV03AN306_2_Health"));
            data.Add(Factory("LV03AN306_3_Health"));
            data.Add(Factory("LV03AN306_4_Health"));
            data.Add(Factory("LV03AN306_5_Health"));
            data.Add(Factory("LV03AN306_6_Health"));
            //13
            data.Add(Factory("LV03AN307_1_Health"));
            data.Add(Factory("LV03AN307_2_Health"));
            data.Add(Factory("LV03AN307_3_Health"));
            data.Add(Factory("LV03AN307_4_Health"));
            data.Add(Factory("LV03AN307_5_Health"));
            data.Add(Factory("LV03AN307_6_Health"));
            data.Add(Factory("LV03AN307_7_Health"));
            data.Add(Factory("LV03AN307_8_Health"));
            data.Add(Factory("LV03AN307_9_Health"));
            data.Add(Factory("LV03AN308_1_Health"));
            data.Add(Factory("LV03AN308_2_Health"));
            //14
            data.Add(Factory("LV03AN310_Health"));
            data.Add(Factory("LV03AN309_Health"));
            data.Add(Factory("LV03AN308_3_Health"));
            //15
            data.Add(Factory("LV03AN206_9_Health"));
            data.Add(Factory("LV03AN206_8_Health"));
            data.Add(Factory("LV03AN206_7_Health"));
            //16
            data.Add(Factory("LV03AN201_Health"));
            data.Add(Factory("LV03AN202_Health"));
            data.Add(Factory("LV03AN203_Health"));
            data.Add(Factory("LV03AN204_Health"));
            data.Add(Factory("LV03AN206_1_Health"));
            data.Add(Factory("LV03AN206_2_Health"));
            data.Add(Factory("LV03AN206_3_Health"));
            data.Add(Factory("LV03AN206_4_Health"));
            data.Add(Factory("LV03AN206_5_Health"));
            data.Add(Factory("LV03AN206_6_Health"));
            //17
            data.Add(Factory("LV03AN207_1_Health"));
            data.Add(Factory("LV03AN207_2_Health"));
            data.Add(Factory("LV03AN207_3_Health"));
            data.Add(Factory("LV03AN208_1_Health"));
            data.Add(Factory("LV03AN208_2_Health"));
            data.Add(Factory("LV03AN208_3_Health"));
            data.Add(Factory("LV03AN208_4_Health"));
            data.Add(Factory("LV03AN209_Health"));
            //18
            data.Add(Factory("LV03AN111_Health"));
            data.Add(Factory("LV03AN108_Health"));
            data.Add(Factory("LV03AN107_3_Health"));
            data.Add(Factory("LV03AN107_2_Health"));
            //19
            data.Add(Factory("LV03AN101_Health"));
            data.Add(Factory("LV03AN102_Health"));
            data.Add(Factory("LV03AN103_Health"));
            data.Add(Factory("LV03AN104_Health"));
            data.Add(Factory("LV03AN106_1_Health"));
            data.Add(Factory("LV03AN106_2_Health"));
            data.Add(Factory("LV03AN106_3_Health"));
            data.Add(Factory("LV03AN106_4_Health"));
            data.Add(Factory("LV03AN106_5_Health"));
            data.Add(Factory("LV03AN107_1_Health"));

            //温控
            data.Add(Factory("LV1_BYQ_Health"));
            data.Add(Factory("LV2_BYQ_Health"));
            data.Add(Factory("LV3_BYQ_Health"));
            data.Add(Factory("LV4_BYQ_Health"));
            #endregion

            foreach (var item in data)
            {
                Console.WriteLine($"Name:{item.name},Value:{item.value}");
            }

            bool flag2 = memoryFile == null;
            if (flag2)
            {
                memoryFile = MemoryMappedFile.CreateOrOpen("Global\\EMOSTServerPublishVariables", 1024*100);
                
            }
            var stream = memoryFile.CreateViewStream(0,1024*100,MemoryMappedFileAccess.Write);
            var formatter = new BinaryFormatter();
            stream.Seek(0L, SeekOrigin.Begin);
            formatter.Serialize(stream, data);
            stream.Close();
            stream.Dispose();

            Thread.Sleep(1000);
            Run();
        }
        static PublishVariableValue Factory(string name)
        {
            
            return new PublishVariableValue
            {
                value = random.Next(0,2),
                name = name,
                source = "CTAPI"
            };
        }

 

  接受数据方

 MemoryMappedFileSecurity mSec = new MemoryMappedFileSecurity();
                mSec.AddAccessRule(new AccessRule<MemoryMappedFileRights>("everyone",
                    MemoryMappedFileRights.FullControl, AccessControlType.Allow));
                var memoryMappedFile = MemoryMappedFile.CreateOrOpen("Global\\EMOSTServerPublishVariables", 1024 * 100, MemoryMappedFileAccess.ReadWriteExecute, MemoryMappedFileOptions.None, mSec, HandleInheritability.Inheritable);
                memoryMappedFile.SetAccessControl(mSec);
                var strream = memoryMappedFile.CreateViewStream();
                var formatter = new BinaryFormatter();
                strream.Seek(0L, SeekOrigin.Begin);
                List<PublishVariableValue> result = formatter.Deserialize(strream) as List<PublishVariableValue>;
                return Json(result, JsonRequestBehavior.AllowGet);

  

 

posted @ 2020-06-16 09:01  haoxinxinxini  阅读(190)  评论(0编辑  收藏  举报