VS 08 Express到Classic ASP

时间:2013-08-01 13:21:21

标签: vb.net visual-studio-2008 asp-classic

情况如下:

我们为我们的网站运行了经典的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

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)

答案:

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

  
      
  1. 构建.dll和目标.NET Framework 3.5,使其可见COM。

  2.   
  3. 使用随Visual Studio 2008 Beta 2安装的GAC实用程序(因此> .NET Framework 3.5) - 它位于C:\ Program文件夹\ Microsoft SDKs \ Windows \ V.0A \ bin中 - 将生成的.dll放入GAC

  4.   
  5. 使用我在c:\ Windows \ Microsoft.NET \ framework \ V2.0.50727中找到的regsam.exe文件来>注册生成的.dll。

  6.   
  7. 使用我在C:\ Program文件夹\ Microsoft SDKs \ Windows \ V.0A \ bin中找到的tlbexp.exe文件到> .export a .tlb文件

  8.   
  9. 在VBA IDE中,使用Tools-> References浏览到.tlb文件并选择它作为> addtional引用。

  10.   

问题是我没有做第2步或第4步。 我希望这对未来的人有所帮助,因为我花了很长时间才解决。