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

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

我还必须在trust = Full中运行应用程序。以前它处于水平=中等水平。

这个问题是否有一个很好的解决方法。我想降低信任级别,而不是仅仅因为一个屏幕需要excel导入而将应用程序降级到32位(此屏幕的使用也不常见)

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

有帮助吗?

解决方案

FoxFire正确指出,不能在同一过程中混合32位和64位代码。

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

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

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

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

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

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

其他提示

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top