从网页按钮打开Word应用程序

4
我正在开发一个概念验证的Web应用程序:一个带有按钮的网页,可打开用户PC上安装的Word应用程序。
我在Visual Studio 2008 Express(Windows XP客户端,LAMP服务器)中遇到了C#项目问题。我已经按照在.NET中编写ActiveX控件教程进行了调整,然后添加了打开Word的按钮。
问题是我可以从项目中引用Microsoft.Office.Interop.Word,但我无法从网页中访问它。错误显示“该程序集不允许部分信任的调用者”。
我已经阅读了很多关于.NET安全性的文章,但现在完全迷失了方向。免责声明:我仅接触.NET 4天。
我尝试解决此问题,但我看不到任何解决方法!我甚至不知道它是否可能实现!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using Word = Microsoft.Office.Interop.Word;

using System.IO;
using System.Security.Permissions;

using System.Security;
[assembly: AllowPartiallyTrustedCallers]

namespace OfficeAutomation
{
    public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        private void openWord_Click(object sender, EventArgs e)
        {
            try
            {
                Word.Application Word_App = null;
                Word_App = new Word.Application();
                Word_App.Visible = true;
            }
            catch (Exception exc)
            {
                MessageBox.Show("Can't open Word application (" + exc.ToString() + ")");
            }
        }
    }
}

请注意,您应该了解ActiveX仅在Internet Explorer中运行,而无法在Firefox / Chrome中运行。 - Mikhail Orlov
1
你需要的仅仅是打开Word吗?换句话说,你需要进一步使用自动化接口吗?如果不需要,你可以让按钮启动下载一个空白的Word文档,然后用户可以选择打开Word。 - Chris Taylor
是的,我需要完全自动化;我会下载两个文档并进行比较。 - aercolino
2个回答

2
使用 .Net Framework 4 + XBAP 可以轻松实现:您可以使用 WPF XBAP 替代 ActiveX。
在“项目设置”窗口中执行以下操作: 签名:取消所有复选框的选择(此项目不需要签名), 在“安全性”选项卡下,将其更改为完全信任。
用户将被提示一次是否允许应用程序运行。

0

.NET安全博客中,如何为Internet Explorer托管的程序集提供额外的信任一文揭示了这个问题。它的日期是2003年,所以现在可能已经有所改变...我不知道。

但是一个评论者问道(2006年)

是否有可能在不更改客户端任何内容的情况下执行.net程序集的所有信任权限?我们之前一直在使用签名的ActiveX在CAB中运行良好,并尝试将其移植到C#。

然后Shawnfa回答说:

不,目前无法在客户端上提升控件的权限。最接近的选项是ClickOnce,它允许您提示和提升应用程序的权限,但该应用程序将不会托管在网页中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接