1

我正在运行 Windows Web 2008 x64 安装。

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

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

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

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

4

2 回答 2

3

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

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

于 2009-10-26T22:47:54.370 回答
1

正如FoxFire 正确指出的那样,您不能在同一进程中混合 32 位和 64 位代码。

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

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

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

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

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

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

于 2009-10-28T14:48:38.213 回答