I在Windows Server 2022Standard
中托管了我的Django应用程序在Windows IIS上但是我的应用程序具有打开软件(.EXE)并运行网站请求中提供的特定用户任务的功能。
,例如,用户从我的网站提供了一些输入,然后通过打开我不使用python代码在views.py
script_path = "C:\inetpub\wwwroot\webapp\script\runthescript.py"
subprocess.run(["C:/Program Files/My Soft/Soft.exe", "-runScriptFile", script_path])
我的问题
python manage.py runserver
访问时,我在本地测试了我的应用程序时,但是当我在使用IIS托管IIS之后尝试使用时,所有工作都可以启动。
我尝试了什么:
我尝试将我的AppPool身份提供为(IIS AppPool \ WebApp)管理员特权。 使用任务调度程序进行了尝试,但它可以与背景过程一起使用,但与GUI应用程序无效。issue
session 1
和
privileges
访问。 IIS只有
session 0
我在使用Django上运行Linux可执行执行时遇到了类似的挑战。 Windows IIS上的Django面临的问题是一个基本的Windows安全功能,称为“Session0 Inlyation”。当我使用Django在Ubuntu上实现了类似的功能时,权限模型完全不同,但这是我在Windows Server 2022上处理此功能的方式。 在使用Django的Ubuntu服务器上,我们通常会担心文件权限和可执行文件。但是,在与IIS的Windows Server上,您面临着不同的挑战。您的应用程序在“
Session0”中运行 - 一个专门的Windows会话,其中从用户界面隔离的服务运行。引入了这种隔离,以防止Windows Vista和Server 2008的攻击。
当您在本地运行django应用程序时,它在您的交互式用户会话(会话1或更高)中运行,具有完整的GUI功能。但是当在IIS上托管时,它仅限于会话0,默认情况下不能向用户显示GUI元素。使用FiredaemonZero