代码之家  ›  专栏  ›  技术社区  ›  Alnitak

在Asp中模拟用户。网

  •  3
  • Alnitak  · 技术社区  · 17 年前

    我的DBA要求通过受信任的域帐户进行所有数据库访问。这可以通过设置web来完成。配置。这需要用户登录或在IE的域上传递凭据。我想使用代码模拟用户。我正在使用此知识库文章中的代码:

    http://support.microsoft.com/kb/306158

    它工作得很好,我传入凭据,模拟用户,然后调用数据库并返回数据。

    如果IIS可以为所有页面模拟域用户,那么为什么我不能在使用代码时模拟用户?

    http://msdn.microsoft.com/en-us/library/ms229553.aspx

    有什么建议吗?甚至可以做我想做的事吗?

    2 回复  |  直到 17 年前
        1
  •  3
  •   Atif Aziz    17 年前

    模拟发生在线程级别。模拟导致线程的访问令牌(通常从进程继承)被另一个替换。最佳做法是在完成所需的操作后立即恢复模拟的效果,从而恢复令牌。IIS或ASP的情况也一样。网每个请求通常由不同的线程处理,因此您必须使每个线程模拟用户。

    数据库我必须运行 模拟代码。

    所以这是正确的。

    如果IIS可以模拟域用户 对于所有的页面,为什么我不能

    IIS并没有做任何不同的事情,所以它可能只是一种被感知到的幻觉。它无法为所有页面模拟用户,除非所有页面都由同一线程提供,并且在提供每个页面时,模拟令牌从未被还原。

    好像是有线的东西 上下文切换。

    ExecutionContext API被引入,并做了很多繁重的工作。

        2
  •  1
  •   erlando    17 年前

    丢失模拟上下文的原因是,每次新页面请求结束时,模拟上下文都将超出范围。

    <alwaysFlowImpersonationPolicy>

    推荐文章