Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
如何使用IIS上下文在.NET中进行模拟?_.net_Iis_Impersonation - Fatal编程技术网

如何使用IIS上下文在.NET中进行模拟?

如何使用IIS上下文在.NET中进行模拟?,.net,iis,impersonation,.net,Iis,Impersonation,我曾经在IIS应用程序池中运行自己的应用程序,该应用程序需要访问forgein服务器才能访问文件。(远程加载和复制本地文件以通过网络交付) 我的方法是 If LogonUser(m_username, m_domain, m_password, LOGINTYPE, LOGON32_TYPE_NEW_CREDENTIALS, windowsToken) <> 0 Then ... 如果LogonUser(m_用户名、m_域、m_密码、登录类型、LOGON32_键入新的\u凭据、wi

我曾经在IIS应用程序池中运行自己的应用程序,该应用程序需要访问forgein服务器才能访问文件。(远程加载和复制本地文件以通过网络交付) 我的方法是

If LogonUser(m_username, m_domain, m_password, LOGINTYPE, LOGON32_TYPE_NEW_CREDENTIALS, windowsToken) <> 0 Then
...
如果LogonUser(m_用户名、m_域、m_密码、登录类型、LOGON32_键入新的\u凭据、windowsToken)0,则
...
将uer权限切换/扩展到远程服务器。然后开始复制文件。 只要我在调试器/自托管exe中运行它,它就可以工作。 每当我尝试将DLL部署到IIS并在那里运行时,我都无法访问远程文件服务器

我还使用了其他不同的登录类型(网络、批处理…),但随后出现了一个新问题:我可以访问远程服务器,但不能访问自己的本地计算机。(远程用户没有本地权限)


有人有主意吗?这是IIS特有的问题吗?

您遇到了什么问题?从你的帖子上看不清楚。您正在使用Win32 API以用户身份登录/模拟,以完成用户帐户允许他们执行的操作。用户帐户需要访问远程目录/文件,如果没有,当然会失败。或者,您可以在配置文件中将Windows模拟设置为true,并在IIS中启用Windows身份验证,这样它将使用您在网站上的用户帐户(或访问网站的任何人)-这在大多数情况下都是内部组织的理想选择我使用win32函数访问远程文件共享。在我的例子中,这是一个web服务。我的确切问题是,当作为自托管.exe运行时,它在调试模式下工作,并且不会作为应用程序池的一部分在IIS中工作。使用不同的登录类型只会导致一个问题,即我完全更改了当前用户上下文,无法将文件从远程复制到本地。在尝试复制文件时,您会遇到什么确切的错误?显示您在尝试复制文件时使用的代码…Win32 API要求应用程序池帐户具有必要的权限。您现在使用的池标识是什么?是的,因此是权限问题。为该文件夹授予用户帐户访问的正确权限。正如Lex Li指出的,这还取决于所使用的应用程序池用户帐户。