Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net中的模拟未与com对象共享_C#_Asp.net_C++_Api_Com - Fatal编程技术网

C# asp.net中的模拟未与com对象共享

C# asp.net中的模拟未与com对象共享,c#,asp.net,c++,api,com,C#,Asp.net,C++,Api,Com,因此,我有一个ASP.NET web服务,它需要模拟经过Windows身份验证的用户。此web服务调用Com Api来执行数据库操作 似乎模拟不会持续存在于Com Api中。这是因为Com DLL被加载到它自己的内存空间中,并被视为一个单独的进程吗?还有什么方法可以处理这个问题并将模拟持久化到Com Api Dll中 此时,将Com Api的功能移动到dot net代码中不是一个选项。COM API也是用C++编写的。< /P> < P>,所以我解决了这个问题。Com对象被加载到它自己的线程中,

因此,我有一个ASP.NET web服务,它需要模拟经过Windows身份验证的用户。此web服务调用Com Api来执行数据库操作

似乎模拟不会持续存在于Com Api中。这是因为Com DLL被加载到它自己的内存空间中,并被视为一个单独的进程吗?还有什么方法可以处理这个问题并将模拟持久化到Com Api Dll中


此时,将Com Api的功能移动到dot net代码中不是一个选项。COM API也是用C++编写的。< /P> < P>,所以我解决了这个问题。Com对象被加载到它自己的线程中,模拟被设置为线程级。因为我已经控制了Com对象,添加了Windows函数CoImpersonaeClient;在任何需要模拟的代码出现之前

以下是我最终发现的解决问题的文章:


这些组件之间的服务器体系结构是什么。如果它们分布在不同的服务器上,则可能是您受到了“双跳”效应的影响。IIS服务器和Com Api都在同一台服务器上。那篇文章说模拟是一个操作系统级别的命令,这对我来说应该可以正常工作。此外,Com Api还与Sql Server通信,在本测试案例中,Sql Server也在同一台机器上运行。我也不完全了解模拟发生在什么级别。我注意到每个进程都由一个用户拥有。是这个过程被模仿了吗?