情况如下:
我们为我们的网站运行了经典的ASP。 我们有VB6 DLL,在ASP中作为COM对象运行。
我已经转移到Visual Studio 2008.我正在尝试创建可以在ASP中使用的DLL,就像我们使用VB6一样(Server.CreateObject(“”))。不幸的是,虽然注册成功,但我得到了: “检查权限时对Server.CreateObject的调用失败。此对象拒绝访问。”错误。
我做了大量的研究,发现你必须用'regasm'(我做过)注册VB.NET DLL你还需要勾选相应的(“Make assembly COM-Visible”)框。
然而,通过我所有的努力,似乎我已经没有运气了。 为了在VB.NET中创建COM DLL,我确实读过一些关于有一个名为“COM类”的类模板的东西,但我在模板选择中没有这个选项。
所以我的问题是,我是否更改为visual studio(非表达式以获取COM类模板,如果是,那肯定会有效吗?)
或 的
我有什么不正确的事吗?
请注意,移植到ASP.NET不是一个选项,也不是用VB6编程。
谢谢!
修改的
经过大约整整一周的搜索,我找到了答案,对于找到此页面的任何人:http://social.msdn.microsoft.com/Forums/en-US/9f84bdf7-aace-4a57-a3e4-3863a0efb647/how-to-create-comvisible-dll-that-i-can-use-from-vba-using-vs-express-2008-beta-2
答案 0 :(得分:0)
男人,你必须经常阅读.net。
你不能只写一个.net dll然后在经典的asp中使用它。这是两种完全不同的技术。
它与visual Studio完全无关。 Visual Studio只是开发环境,与您的.net Framework或Web应用程序完全无关。你不能使用visual Studio>版本6用于vb6编程。因此,您无法使用Visual Studio 2008n或2010或2003或2005创建vb6 dll。
你可以编写.net dll并在经典的asp或任何其他com Aware技术中使用它们。但它们仍然是需要.net框架的.net dll。他们只是可见。
这有点复杂但可能:
您可以通过使用属性[ComVisibleAttribute( true )]
来实现此类和方法“com com”
就在您的课程声明之前,以及您想要显示的每个方法之前。
例如:
[ComVisibleAttribute( true )]
public class Helper {
public Helper() {
}
[ComVisibleAttribute( true )]
public object parseDate( string strDate ) {
return (object)DateTime.Parse( strDate ).ToString( "dd.MM.yyyy HH:mm:ss" );
}
}
你必须为你的类使用一个emtpy构造函数!
此外,您必须在项目属性中检查“Assemlby Com visible” - > assemblyinformation 或者打开Properties / AssemblyInfo.cs并添加以下行:
[assembly: ComVisible( true )]
[assembly: Guid( "e2e1670d-1f90-4948-98be-27cc820b4675" )]
在构建dll后,必须使用ragasm.exe在注册表中注册.net dll。 (默认情况下,普通的.net dlls是注册表注册表。
你可以这样做:
%windir%\Microsoft.NET\Framework\v4.0.30319\regasm.exe path/and/Name/of/your.dll /codebase
您必须确保所需.net框架的路径正确无误。
之后你必须重新启动iis,然后才能使用经典asp中的.net dll方法。
请注意,您只能将简单数据类型的值传递给您的.net方法,从/到clasic asp,如string,int等。
答案 1 :(得分:0)
答案:
构建.dll和目标.NET Framework 3.5,使其可见COM。
使用随Visual Studio 2008 Beta 2安装的GAC实用程序(因此> .NET Framework 3.5) - 它位于C:\ Program文件夹\ Microsoft SDKs \ Windows \ V.0A \ bin中 - 将生成的.dll放入GAC
使用我在c:\ Windows \ Microsoft.NET \ framework \ V2.0.50727中找到的regsam.exe文件来>注册生成的.dll。
使用我在C:\ Program文件夹\ Microsoft SDKs \ Windows \ V.0A \ bin中找到的tlbexp.exe文件到> .export a .tlb文件
- 醇>
在VBA IDE中,使用Tools-> References浏览到.tlb文件并选择它作为> addtional引用。
问题是我没有做第2步或第4步。 我希望这对未来的人有所帮助,因为我花了很长时间才解决。