2009-01-08 107 views
2

我使用模擬用於訪問UNC共享上的文件,如下所示。模仿與授權

var ctx = ((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate(); 
    string level = WindowsIdentity.GetCurrent().ImpersonationLevel); 

使用IIS6兩個Windows 2003服務器,我得到不同的模擬級別:代表團一個服務器和其他服務器上模擬上。

這會導致無法訪問具有「模擬」級別的服務器上的UNC共享的問題。

什麼可能導致這種差異?我通過machine.config和IIS設置搜索了應用程序池,網站和虛擬目錄 - 但無法找到此問題的原因。

回答

7

這聽起來像列出計算機的一個是受Active Directory委託,但另一個不是。如果應用程序池標識爲網絡服務,請確保計算機帳戶在AD中標記爲「受委派代理」。

您可能需要讓AD管理員強制複製,然後註銷/進入工作站以刷新Kerberos票證緩存。

+0

我問一個相關的問題,你可以請檢查一下:http://stackoverflow.com/questions/18842970/asp-net-imperonate-in-netframework-2-vs-netframework-4 – 2013-09-17 07:29:12

2

如果用localhost作爲Web服務器和它的工作,但你的測試部署時收到你可能會運行到雙躍點問題的錯誤....在此blog post

1

對於那些我們做模仿我們的應用(),我們發現,我們不得不修改本地安全策略應用程序池所有者和帳戶添加到以下策略/組:

  1. 充當部分操作系統特權。
  2. 驗證後模擬客戶端。

在服務器上,運行開始>所有程序>管理工具>本地安全策略,然後導航到本地安全策略>用戶權限分配並查找以上兩個策略。