4

我们有一个工业系统,可以使用提供给我们的一些 C++ DLL 进行接口。我编写了一个 .NET 包装器来控制工业系统,然后将这个 .NET 包装器捆绑到一个 ASP .NET Web 应用程序中,这样我们就可以通过 Web 控制系统。

当我使用 ASP .NET 开发服务器在 Visual Studio 中运行/调试时,一切正常。当我部署到本地 ISS 服务器时,我收到来自 C++ DLL 的错误,(有人告诉我)这意味着存在通信故障。

因为 IIS 应用程序和开发服务器在同一台机器上,一个工作而另一个不工作,我确信这是一个权限/安全错误。我花了几天时间摆弄应用程序池标识、ASP .NET 模拟、文件系统权限等,但无济于事。(我也有点 IIS-noob,这没有帮助。)

所以,这里是妙语:

有人可以解释一下如何(如果可能的话)设置一个 IIS ASP .NET 应用程序,以便它可以在对本地机器的完全(全力以赴,枪林弹雨)访问的情况下运行吗?我想确保 IIS 不会阻止应用程序的任何事情

4

2 回答 2

6

我不确定提供完全信任模式是否会解决您的问题,因为错误似乎来自 C++,并且文件系统级别的某种权限丢失或文件本身丢失。

无论如何,要回答您的问题,您可以使用 web.config 设置完全信任模式,将以下部分添加到您的 web.config:

<system.web>
 <securityPolicy>
   <trustLevel name="Full" policyFile="internal"/>
 </securityPolicy>
</system.web>

更多细节可以在这里看到:http: //msdn.microsoft.com/en-us/library/wyts434y.aspx

于 2012-04-19T01:24:52.543 回答
1

除了在 ASP.NET 应用程序本身中设置完全信任级别,检查 IIS 用于匿名访问您的网站/Web 应用程序的用户:

Web 应用程序 -> 属性 -> 目录安全 -> 编辑(在身份验证和访问控制中)。

(此路径适用于 IIS6。)

默认情况下,IIS 为用户分配了缩减权限,这可能会导致您遇到问题。

于 2012-04-19T04:09:21.197 回答