我正在开发一个远程控制应用程序,其中客户端(浏览器中的aspx页面)可以请求服务器“启动记事本”(用于测试目的,用于现实生活,关闭灯泡等)。所以我用一个简单的函数创建了一个dll来启动记事本(在服务器端)并将这个dll放在根bin文件夹中。
当aspx页面在ASP.NET开发服务器(从Visual Studio启动)下运行时,它工作正常。但是当我在FireFox浏览器下测试相同的aspx页面时,它没有工作(启动记事本),即使它确实需要相同的功能(我在调试器中逐步完成)。
这是权限问题吗?如何在IIS管理器中进行设置,或者在web.config中进行更好的设置?
请帮忙。
答案 0 :(得分:2)
是的,这听起来像是一个许可问题。
运行您的站点的IIS 7中的应用程序池可能使用默认标识,这是最严格的标识。您可以通过右键单击应用程序池(可能称为DefaultAppPool)并选择“高级设置”来更改IIS管理器中的标识。从那里将Identity值更改为Local Service或Network Service。如果这些都不起作用,那么使其成为本地系统应该允许您的页面工作。
我假设Visual Studio集成的Web服务器在您在计算机上登录的帐户的上下文中运行,这可能具有更多权限。
答案 1 :(得分:0)
当你说:
它不起作用(启动记事本)
您是通过例外表示还是未看到记事本窗口打开。如果是权限问题,我希望你会得到一个例外。克里斯说得对,他说:
IIS 7中的应用程序池 您的网站可能正在运行 使用默认标识,即 最具限制性的。
和
我假设Visual Studio已集成 Web服务器在上下文中运行 您登录的帐户 机器,可能有很多 更多权利。
如果这是权限问题,他就是对的。但是,您运行的用户(在Visual Studio中未调试时)很可能无法访问登录用户的桌面。也许您应该尝试使用不需要与桌面交互的应用程序进行测试。