ActiveX 컨트롤을 만들기 위해 Microsoft Visual Studio 프로젝트를 만들었습니다. 그 단계에 대해서는 here을 언급했습니다. HelloWorld.cs라는 클래스 파일을 만들고 "Hello World .."를 반환하는 메서드를 만듭니다. 내가 수행 한 단계는 .. 새 프로젝트 작성 -> 새 클래스 -> HelloWorld.snk 파일을 사용하여 프로젝트에 서명하십시오. 클래스 파일에서 "ProgId", "Guid", "ComVisible"을 추가하여 논리를 구현했습니다. 여기 내 코드는 HelloWorld.cs입니다.HTML 페이지가 IIS에서 호스팅 될 때 ActiveX 컨트롤이 작동하지 않습니다.
using System;
using System.Runtime.InteropServices;
namespace ActiveXClass
{
/// <summary>
/// Demo`enter code here` HelloWorld class
/// </summary>
[ProgId("ActiveXClass.HelloWorld")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[Guid("415D09B9-3C9F-43F4-BB5C-C056263EF270")]
[ComVisible(true)]
public class HelloWord
{
[ComVisible(true)]
public String SayHello()
{
return "Hello World!";
}
}
}
또한 AssemblyInfo.cs 파일에 [assembly : ComVisible (true)]를 설정했습니다. 그런 다음 ActiveX 클래스의 Object를 만들고 SayHello() 메서드를 호출하는 예제 HTML 페이지를 만들었습니다. 그런 다음 위의 단계에 따라 위의 프로젝트에 대한 msi를 만들었습니다. 새 프로젝트 -> 기타 프로젝트 유형 -> 설치 및 배포 -> Visual Studio Installer -> Setup1이라는 설치 프로젝트를 선택합니다. 다음으로 다음 명령으로 ActiveX 프로젝트를 등록합니다. cmd를에서
regasm /codebase "FULLPATH OF MY ACTIVEX DLL"
응답은 : "형이 성공적으로 등록합니다." 그런 다음 FileSystem에서 "D : \ ActiveX \ Test.html"과 같은 샘플 HTML 페이지를 만들었습니다. 다음은 샘플 HTML 코드입니다. 참고 : .cab 파일을 만들지 않았습니다.
<!DOCTYPE>
<html>
<head>
<title>ActiveX webpage</title>
</head>
<body>
<OBJECT id="ACtive" classid="clsid:415D09B9-3C9F-43F4-BB5C-C056263EF270">
</OBJECT>
<script type="text/javascript">
try {
var obj = document.ACtive;
if (obj) {
alert(obj.SayHello());
} else {
alert("Object is not created!");
}
} catch (ex) {
alert("Some error happens, error message is: " + ex.Description);
}
</script>
나는 파일 시스템으로이 페이지 실행 한 (예를 들어, D를 : 액티브 \ test.html를 \)가 메시지를 나타납니다에 "Hello World를 .."성공적으로. 하지만이 HTML 파일을 IIS 서버에 추가하면 해당 메시지를 찾아 볼 때 "일부 오류가 발생합니다. 오류 메시지는 : 정의되지 않음"이라는 메시지가 표시됩니다. 그럼 여기서 뭐가 잘못 됐어 ..? 나는 또한 같은 C# 웹 페이지를 만들었습니다. 그러나 결과는 같습니다. IIS 측 또는 IE 측에서 구성 문제가 있습니까? 나는 이미 많은 것들을 실험했지만 실패했다. 로컬 호스트에서 해당 웹 페이지를 실행하면 localhost:8080/Test.html
처럼 실행되지만 IP 주소로 바꾸면 fails.for 예 http://192.168.1.xx:8080/Test.html
이 문제를 해결하십시오. ActiveX 구성 요소가 매우 새로 생겼습니다. 솔루션을 기대합니다.
모든 아이디어가 크게 감사하겠습니다. 도와주세요. 미리 감사드립니다.
IIS가있는 서버에 ActiveX 구성 요소를 설치 했습니까? 인터넷 영역 및 보안 설정을 확인하고자 할 수도 있습니다. 문제의 사이트를 신뢰할 수있는 사이트 영역에 추가하고 이것이 도움이되는지 확인할 수 있습니다. – Sean
답장을 보내 주셔서 감사합니다. 내 웹 사이트를 IE에 신뢰할 수있는 사이트로 추가하고 "초기화 및 스크립트 ActiveX 컨트롤을 스크립팅에 안전하지 않음"으로 설정했습니다. 이것은 나를 위해 작동합니다. –