【问题标题】:How do I deploy an IIS ASP .NET application with full trust?如何部署完全信任的 IIS ASP .NET 应用程序?
【发布时间】:2012-04-30 12:17:44
【问题描述】:

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

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

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

所以,这里是妙语:

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

【问题讨论】:

  • 是的。 Marshal.GetLastWin32Error() 返回 2。这对应于“找不到文件”,我认为这意味着(基于文件的?)IPC 无法启动。

标签: asp.net .net security iis permissions


【解决方案1】:

我不确定提供完全信任模式是否会解决您的问题,因为错误似乎来自 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

【讨论】:

  • 谢谢。你是对的——它没有解决问题,但它回答了问题:)
【解决方案2】:

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

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

(此路径适用于 IIS6。)

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 2011-03-02
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多