运行Web应用程序32/64位

时间:2009-10-26 22:40:49

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

作为FoxFire correctly points out,您无法在同一过程中混合使用32位和64位代码。

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

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

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

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

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

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