【问题标题】:Running a web application 32/64 bit运行 32/64 位 Web 应用程序
【发布时间】:2009-10-26 22:40:48
【问题描述】:

我正在运行 windows web 2008 x64 安装。

由于应用程序需要能够导入 Excel 文件,我不得不将 Web 应用程序更改为在 32 位模式下运行。 MSAccess/Excel 库在 x64 中不可用。

我还必须提升应用程序以在 trust=Full 下运行。以前它低于 level=medium。

这个问题有没有好的解决方法。我想降低信任级别,而不必仅仅因为一个屏幕需要 excel 导入而将应用程序妥协为 32 位(此屏幕的使用也不频繁)

是否可以将特定文件夹/页面设置为在应用程序中使用 32 位,其余为 x64。我不相信你可以。信任级别也是如此。信任级别应用程序是特定的还是我可以将其发送到嵌套文件夹中?

【问题讨论】:

  • Excel 文件有多复杂?是否可以将它们转换为 CSV,然后作为文本导入?
  • 数据是从 3 个工作表中提取的。要求是 excel,CSV 绝对是最后的选择。

标签: c# asp.net 64-bit 32-bit iis-7.5


【解决方案1】:

在同一个进程中,您永远不能混合使用 32 位和 64 位。您也许可以编写第二个应用程序来为您完成 Excel 工作,然后将其编译为 32 位可执行文件。然后,您可以从您的网络应用程序调用(使用一些参数执行文件)可执行文件(仍然需要完全信任,但它可以运行 64 位)。

编辑:您不一定需要完全信任。您还可以创建自定义信任级别。但关键是它不会在标准网络信任级别下运行。

【讨论】:

    【解决方案2】:

    作为FoxFire correctly points out,你不能在同一个进程中混合32位和64位代码。

    任何需要与 Office 交互的 ASP.NET 应用程序都需要提升信任级别。

    有一种方法可以通过使用一种称为“沙盒”的技术来解决这个问题。

    您所做的是编写一个包装程序集,它只完成您使用 Excel 完成的工作。使用 [assembly: AllowPartiallyTrustedCallers] 属性标记程序集,对其进行签名,然后部署到 GAC。

    此程序集中需要与 Office 互操作组件通信的任何类都应归属于 [PermissionSet(SecurityAction.Assert, Unrestricted=true)] 或任何需要的要求。

    这将允许您降低服务器上的信任级别,但仍使用 Office 组件。

    这是基于您对服务器具有管理访问权限以便能够将“受信任”沙盒程序集放入 GAC 的假设。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-23
      • 2010-10-18
      • 2012-07-04
      • 1970-01-01
      • 2022-08-13
      • 2021-08-31
      • 2010-10-01
      相关资源
      最近更新 更多