本文介绍了注册COM +对象不能在传统的ASP中找到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用C#创建一个dll在VS2008。它是使用.NET Framework 2.0编译。该项目是使用Visual C#/ Windows下的类库模板创建的。我不知道,但如果该事项我尝试使用结果DLL中经典的ASP和asp.net应用程序不是一个桌面应用程序。

这是从利用现有传统ASP的VBScript code和C#中重写它创造。我不是很有经验的创造的dll所以有很多还需要学习。我一直在寻找在创造这个DLL所有样的帮助网页。

这是我迄今所做的。

顶层类设置是这样的:

 使用System.Runtime.InteropServices;
使用的System.EnterpriseServices;
使用系统;
使用System.Text;
使用的System.Web;[大会:应用程序名称(WebFramework)]
[大会:ApplicationActivati​​on(Activati​​onOption.Server)
[大会:ApplicationAccessControl(假的,
           AccessChecksLevel = AccessChecksLevelOption.ApplicationComponent)命名空间WebFramework
{
    [GuidAttribute(AACB678E-2C54-450A-873D-​​77A5A15BA0E5)]
    公共类框架:ServicedComponent的
    {
        //布拉赫
    }
}

其他类项目是公开的,他们都从类继承框架。我并没有包括这些类的GuidAttribute指令,因为我不知道这是否是必要的或没有。我也需要他们接触,因为我会从我传统的ASP / asp.net应用程序中引用它们。

在我编我的code我复制了三个文件; Inter.Scripting.dll,WebFramework.dll和WebFramework.pdb到Web服务器

该网站的服务器是与IIS 7.5安装。

在Windows 2008 R2箱

在服务器上的命令提示符下,我跑了regsvcs程序,并安装了这个组件,并与出任何问题注册的DLL。该命令窗口是这样的:

<$p$p><$c$c>E:\\inetpub\\wwwroot\\web\\WebFramework>\"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319/regsvcs.exe\" /应用程序的名字:WebFramework /tlb:WebFramework.tlb WebFramework.dll微软(R).NET框架服务安装实用程序版本4.0.30319.17929版权所有(C)微软公司。版权所有。安装组件:
        大会:E:\\的Inetpub \\ wwwroot的\\网络\\ WebFramework \\ WebFramework.dll
        应用:WebFramework
        类型库:E:\\的Inetpub \\ wwwroot的\\网络\\ WebFramework \\ WebFramework.tlb

我查了组件服务应用程序,并有下COM +应用WebFramework对象。我也跑regedit并搜索WebFramework,它发现我的电脑下的应用程序\\ HKEY_CLASSES_ROOT \\ WebFramework ..

到目前为止,我觉得一切是正确的....是吗?

当我运行一个测试传统的ASP页面具有以下code,我得到的错误424 - 必需对象

 &LT; HTML和GT;
&LT; HEAD&GT;
    &LT;标题&GT;&LT; /标题&GT;
&LT; /头&GT;&LT;身体GT;
    &LT;脚本类型=文/ VBScript中&GT;
        在错误恢复下一页        昏暗WebFrame
        设置WebFrame =的Server.CreateObject(WebFramework.Framework)        的document.write(&LT;小时&gt;中)
        文件撰写(Err.Number的)
        的document.write( - )
        文件撰写(Err.Description它将)
        的document.write(&LT; BR&GT;&LT;小时&gt;中)    &LT; / SCRIPT&GT;
&LT; /身体GT;
&LT; / HTML&GT;

我在想什么?为什么不能在ASP页面查找DLL?

我忘了提一件事。在生成选项卡上的项目属性页中存在一个注册为COM Interop复选框。我曾尝试使用该选项编译选中和未选中它并没有区别。


解决方案

而专注您的COM组件是问题试着改变你的ASP code到有效的语法。


Why the Object Not Found Error?

As stated above your code wasn't valid, why?

  1. Use of <script type="text/vbscript"> tag (usually runat="server" is required to use <script> tags server side, but as you get an error that suggests it is being processed by ASP. In future though I would recommend you use <% and %> to distinguish server side processing.

  2. Unless you instantiate it somewhere else, there is no such ASP object called Document. If I was to guess I would say you are trying to output to screen. To do this use the inbuilt Response object (server side request are made up of Request and Response).

I would say your Object Not Found is caused by ASP not understanding what Document is and hence raises the Object Not Found error.


这篇关于注册COM +对象不能在传统的ASP中找到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 04:54