我需要创建一个可以通过ASP Classic的Server.CreateObject方法访问的类,该类公开了三个属性(int Width、int Height、bool Loaded)和三个方法(void Load(字符串定位)、void Resize(整型宽度、整数高度)和void Save(字符串位置))。
发布于 2010-01-15 01:00:31
构建对象非常容易-注册它和管理COM依赖项可能非常棘手。
你的.NET项目应该是一个类库,你的类可以是一个简单的C# / .NET对象:
namespace MyCompany.MyProject.Com {
public class MyObject {
public int Width { get; set; }
public int Height { get; set; }
public void Load(string location) { /* implementation here */ }
public void Resize(int width, int height) { /* implementation here */ }
}
}右键单击项目,选择属性,应用程序,然后单击程序集信息...并确保在assembly Information对话框的底部选择了"Make Assembly COM-Visible“。
构建你的项目--你应该在你的\bin\debug\文件夹中找到MyCompany.MyProject.Com.dll。
创建一个简单的ASP网页,如下所示:
<% option explicit %>
<%
dim myObject
set myObject = Server.CreateObject("MyCompany.MyProject.Com.MyObject")
myObject.Width = 20
myObject.Height = 40
%>
<html>
<head>COM Interop Demo</head>
<body>
<p>Width + Height = <%= myObject.Width + myObject.Height %></p>
</body>
</html>在http://localhost/上打开该页面,并验证您在第一次尝试运行它时是否得到"Server.CreateObject failed“。
现在,使用随.NET框架一起安装的regasm.exe将DLL注册为COM对象:
C:\>C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe /tlb MyCompany.MyProject.Com.dll /codebase
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.4927
Copyright (C) Microsoft Corporation 1998-2004. All rights reserved.
Types registered successfully
Assembly exported to 'D:\WebDlls\MyCompany.MyProject.Com.tlb', and the type library w
as registered successfully现在刷新您的网页,您应该会在输出中看到Width + Height = 60。
这些指令假定您没有在64位中运行任何东西;如果您正在运行,则会变得更加复杂。(您需要将所有内容都作为64位运行-编译64位项目并使用64位版本的regasm.exe将其注册到64位COM,运行64位脚本主机的IIS会访问该COM)-或者手动将所有内容强制为32位。
https://stackoverflow.com/questions/2050507
复制相似问题