请注意:在下面我描述的每个步骤中,我都以相同的域用户帐户登录。
我有一个 Web 应用程序可以控制远程机器上的服务(通过ServiceController)。当我远程连接到网站并尝试控制服务时,我收到 InvalidOperationException: Access is denied。
我知道它可以工作,因为当我从 Web 服务器连接到网站时(远程桌面进入,以我的域用户身份登录,然后打开网页),它按预期工作。
我已将 IIS 和 ASP.NET 配置为需要 Windows 身份验证和模拟。当此操作失败时,我会记录当前线程的主体,并且无论我是远程连接还是从服务器本身连接,我都会看到该线程以我的身份运行。
我曾尝试强制 IIS 同时使用 Kerberos 身份验证、NTLM 身份验证和两者;我的委托人将其 AuthenticationType 报告为“协商”还是“NTLM”都没有关系。当我远程连接(从我的本地机器)时,它们都不起作用
另一个奇怪的事情是,如果我从本地机器调试/连接到远程服务器,它每次都能正常工作!但我不是在调试,每次都失败!
这里到底发生了什么?