Запуск C # Interop Control ActiveX на стороне клиента из ASP.NET

Я пытаюсь сделать простое веб-приложение с помощью ASP.NET и Interop Com.

Главный вопрос: как сделать взаимодействие Com работает на стороне клиента?

Я использую:
IIS Windows Server 2008
C # Interop Com - Visual Studio 2010
ASP .NET - Visual Studio 2010

После взгляда на эти статьи
http://msdn.microsoft.com/en-us/library/aaa479302.aspx
и http: // msdn. Microsoft.com/en-us/magazine/cc301832.aspx.
Я пытался использовать компонент на стороне клиента двумя способами:

первым:

 
    

Второй: В файле .aspx


и в файле .cs:

RegisterClientScriptBlock("showSaveMessage", "");

на стороне сервера я открываю Internet Explorer и работает как очарование. Но на стороне клиента появляется: объект не поддерживает это свойство или метод.

Я также попробовал:

<%
    set Obj = CreateObject("MyApp.MyClass")

    Obj.PrintHi
%>

работает как для обеих сторон, но только вызовите myapp.dll, установленные на стороне сервера.

Использование «тега объекта» является правильным способом? Есть ли другой способ использовать COM на стороне клиента? Как настроить IIS Во избежание объекта не поддерживает это свойство или метод на стороне клиента?

Заранее спасибо

1 # Обновление

Я создаю ASP.NET C # в Visual Studio 2010 на Windows XP 32Bits, которые использует C # Interop Com. На моей машине «Windows XP» я начинаю отладки и IE страницу открывается с моим приложением. Это работает.
Итак, я скопировал проект на Windows Server 2008 и добавил проект в IIS. Когда я бегу, открывается IIS IE и это работает.

После этого я попытался сделать окончательный тест, поэтому я открываю IE в Windows XP и введите адрес, который сгенерировал Windows Server, отлично, я могу видеть страницу, но когда я начнул, чтобы запустить функцию, появляется: Объект не поддерживает это свойство или метод".

Сервер:
Windows 2008 R2 64биты
IE версии 9

клиент:
Windows XP 32биты
IE версия 8

2 # Обновление

Я попробовал еще один тест

Я сделал новый компонент COM
ICLASSTEST.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace MyCOM
{
    [ComVisible(true)]
    [Guid("8F388924-7743-4166-993F-CBF897D08A8B")]
    public interface IClassTest
    {
        string getString(string str);
    }
}

CLASSTEST.CS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace MyCOM
{
    [ComVisible(true)]
    [Guid("1AE4AD64-A951-4E6C-8600-AA1F08810DDD")]
    public class ClassTest : IClassTest
    {
        public string getString(string str)
        {
            return str + "1";
        }
    }
}

в Clashstest.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace MyCOM
{
    [ComVisible(true)]
    [Guid("1AE4AD64-A951-4E6C-8600-AA1F08810DDD")]
    public class ClassTest : IClassTest
    {
        public string getString(string str)
        {
            return str + "1";
        }
    }
}

в AssuaseInf.cs [Assembly: Comisible (True)]

Я сделал еще одно приложение ASP:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="asp_test._Default" %>


 




    

я меняю настройки IE, чтобы отобразить ActiveX, не доверяю и Запустите программу. В Windows XP работает, в Windows Server работает. Но когда попытайтесь позвонить на страницу из Windows XP «Page Windows XP Call Windows 2008»: «Объект не поддерживает это свойство или метод»

, если на стороне клиента я делаю Regasm / u mycom.dll IE предложено установить компонент. DLL хранится в C: \ Windows \ загруженных программных файлов программы , если я пытаюсь установить более одного раза, создает папку под названием Conflict1 .. C: \ Windows \ загруженные файлы программы \ Contrach.1 очень странно. Я также попытался зарегистрировать этот загруженный компонент с помощью Repasmy mycom.dll / codebase .

Сервер .NET: C: \ Windows \ Microsoft.net \ frame \ v4.0.30319
клиент .NET: C: \ Windows \ Microsoft.net \ framework \ v4.0.30319

Почему бы не работать? Это не имеет никакого смысла.

3 # Обновление

Я бежал на другой машине «клиент». Я изменяю настройки IE, чтобы запустить не безопасную ActiveX. И работает, после этого я попробовал на клиенте Windows XP, я сбрал настройки и снова настроил, чтобы снова запустить ActiveX, не безопасно. Это работает.

Теперь проблема связана с установкой Interop Com из ASP. Я пытался установить, но появляется: Объект не поддерживает это свойство или метод. Я думаю, что это связано с безопасностью . Я нашел эту ссылку: http://msdn.microsoft.com/en-us/library/aaa751977.aspx#iobjsafe Но предназначен для C ++, есть ли примеры C #?

4 # Обновление

] Я пытался использовать:
CLASSTEST общественных классов: System.Windows.forms.Usercontrol, iClasstest
Я также пытался сделать файл .cab, но не работает.

У меня есть проект WPF? Почему это не работает?

5
задан Joel Coehoorn 17 November 2011 в 15:48
поделиться