Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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# 如何让.net web服务调用停止模拟以执行任务_C#_Asp.net - Fatal编程技术网

C# 如何让.net web服务调用停止模拟以执行任务

C# 如何让.net web服务调用停止模拟以执行任务,c#,asp.net,C#,Asp.net,我有一个运行windows身份验证和模拟设置为true的.net web服务。但是,当应用程序连接到数据库时,它需要停止模拟并作为应用程序池的服务帐户运行 我的理解一直是,停止模拟的方法是运行以下代码 WindowsImpersonationContext ctx = WindowsIdentity.Impersonate(IntPtr.Zero); 然后当我想重新启动模拟时 ctx.Undo(); 但由于某些原因,当我运行代码时,它从未停止模拟调用用户,而是继续作为该用户,并且无法连接到使

我有一个运行windows身份验证和模拟设置为true的.net web服务。但是,当应用程序连接到数据库时,它需要停止模拟并作为应用程序池的服务帐户运行

我的理解一直是,停止模拟的方法是运行以下代码

WindowsImpersonationContext ctx = WindowsIdentity.Impersonate(IntPtr.Zero);
然后当我想重新启动模拟时

ctx.Undo();
但由于某些原因,当我运行代码时,它从未停止模拟调用用户,而是继续作为该用户,并且无法连接到使用集成安全性的sql db,并且只有服务帐户具有db访问权限


为了让它正常工作,我缺少了什么?

我使用的方法似乎很好。该错误是sql连接出现问题,并且假设模拟失败。我用错误的支票来核实身份,以此来证实我的假设。我原来问题中的代码实际上是有效的。

我使用的方法似乎很好。该错误是sql连接出现问题,并且假设模拟失败。我用错误的支票来核实身份,以此来证实我的假设。我原来问题中的代码实际上是有效的。

确认了您的方法。当您说“它永远不会停止模拟”时,您是从调试会话还是仅仅通过SQL连接失败的事实知道这一点?在“expersonation”之后,是否在同一个线程中进行了连接尝试?啊…我的错,我没有检查身份的正确位置。它似乎工作得很好。我检查的是HttpContext,而不是WIndowsIdentity。sql失败是由于另一个问题造成的,这似乎证实了我最初的假设。确认你的方法。当您说“它永远不会停止模拟”时,您是从调试会话还是仅仅通过SQL连接失败的事实知道这一点?在“expersonation”之后,是否在同一个线程中进行了连接尝试?啊…我的错,我没有检查身份的正确位置。它似乎工作得很好。我检查的是HttpContext,而不是WIndowsIdentity。sql失败是由于另一个问题造成的,这似乎证实了我最初的假设。