高手请进,来者有分

时间:2021-10-14 22:07:19
请问高手,能否在Asp里直接调用C#编写的组件,如果可以,怎么调用?

20 个解决方案

#1


asp是vs6.0

#2


用webservice

helloworld.asmx

<%@ WebService Language="C#" Class="HelloWorld" %>
using System;
using System.Web.Services;

[WebService(Namespace="http://127.0.0.1/")]
public class HelloWorld
{
[WebMethod(Description="Say Hello to u")]
public string SayHello()
{
return "hello";
}
}

用wsdl和csc编成dll放到/bin目录下

在aspx里就可以用

HelloWorld h = new HelloWorld();
string s = h.Sayhello();

其它调用类似

#3


http://www.csharphelp.com/archives/archive257.html

#4


你是说的在ASP里还是在ASP+里???

#5


是在Asp里,not Asp+,请问给位高手,在Asp里怎么调用阿
谢啦

#6


dotNET的互操作性非常好.ASP中是可以调用的.不过有一点差别,ASP中可能不能直接调用C#编写的组件,但可以通过COM+环境来做到这一点.
coldljy 推荐的文章中的Exposing Microsoft .NET Framework components to COM clients 一节介绍了具体的方法,之后你可以从COM+中倒出代理包或直接使用这些组件了(强名之后的组件在ASP的使用上和原来的老组件没有太大分别).
这是目前混和环境中的一种不错的办法,用这种方式的组件得益于新的组件结构和编程的方便,但事实上,性能上它可能低于你原来的用VB或VC编写的组件.
如果可以考虑升级ASP到ASP+,ASP的引擎性能低于现在新的ASP+,而所有调用的组件都是以所在的引擎作为宿主的.


#7


你问的问题很好,在.net还没有盛行的今天,应该考虑一下与asp的互操作性

#8


我被你说的问题折磨了几个星期! 
 我也是用C#写的一个UserControl控件,想直接在WebForm中调用 。但是结果很让人失望:基本不行
 即使行,也得在Client安装 . Net FrameWork
 在ASP中调用如下: 
 <object id="Control1"      classid="http:myControl.dll#mycontrol.Control1" 
   height="500" width="600"></object> 
   并在iis中的将相关虚拟目录的执行权限设置为:纯脚本。

#9


这个问题也折磨了我好几天,因为时间紧张,我后来是把用asp+界面替换了原有了asp;这几天我已经相关项目作完,腾出了点时间来研究这个问题,希望能跟大家好好交流。

#10


为什么不能生成server side控件呢? 因为所有在IE中能显示的,都必须能被Html解释,就和 所有的asp.net webcontrol 一样。因为一个WinForm Control 是没办法解析成HTML的 
"while a winform control is downloaded from the server, runs directly on the client machine and draws to the screen using GDI+ instead of HTML"

  Client的WinForm Control必须有restricted security environment,比如访问网络、和本地文件等。由于.Net FrameWork本身更严格的安全要求,所以基于 .Net FrameWork的Control比ActiveX也有更高的安全要求。因而,新一带MS的开发平台不鼓励这样的结构设计。 

  我们习惯把有界面的COM称为Activex 而*面的称为COM server. 
.Net 对COM仍是自持的,但你必须做一些处理,比如:Tlbexp,regasm命令等
但要想想其它工具生成OCX,然后直接能加入到ToolBox中拖放到wevform上,在.Net开发的UserControl已经是不能的了

#11


对了,如果确实要在ASP中调用UserControl,你可以
 到http://gotdotnet.com/team/windowsforms/iesourcing.aspx
有比较详细的介绍

 我对我了解的结果很失望
我不得不用其他工具从新编写我的UserControl供ASP./Net调用
毕竟,要求每个 Client 安装.Net FrameWork是苛刻的

#12


可以,通过引用该NAMESPACE

#13


关注,学习,一起进步!

#14


可以,但你在ASP服务器上有执行CGI的权限,要么ASP是不会让你执行的。

#15


謝謝各位高手的幫助,但能否説明白點。
to ccBoy(小气的神):用COM+使我最開始用的一個方法,結果不理想;
to wenzm(风子驴):我用你的方法試過,因爲以前我寫的Asp程序,調用外部的的組件時就是用這樣的方法,可惜現在不能實現我說的問題;
to triout(Daview):如果是.net正式版的話,可以用這個方法在VB等編輯器裏實現,應該說在Asp裏是可以的,不過我是幾次,結果很令人失望;
to hqywork(华奇英):能夠説明白點,謝了先。

#16


如果你的组件是.Net 写的,只能 <object id="Control1"      classid="http:myControl.dll#mycontrol.Control1" 
   height="500" width="600"></object> 
这样调用,而且Client必须装.net FrameWork(20.8M)

#17


关注……

#18


關注﹐學習

#19


to wenzm(风子驴):你的方法確實是可行的,不過目前要求所有client都安裝.net FrameWork不是很現實;

#20


1. 其实不一定要COM+的,用tlbexp生成一个tlb,然后就可以当COM组件用了。
2. 用managed C++ extension做一个managed->unmanaged DLL包装,然后怎么调都行了。

#1


asp是vs6.0

#2


用webservice

helloworld.asmx

<%@ WebService Language="C#" Class="HelloWorld" %>
using System;
using System.Web.Services;

[WebService(Namespace="http://127.0.0.1/")]
public class HelloWorld
{
[WebMethod(Description="Say Hello to u")]
public string SayHello()
{
return "hello";
}
}

用wsdl和csc编成dll放到/bin目录下

在aspx里就可以用

HelloWorld h = new HelloWorld();
string s = h.Sayhello();

其它调用类似

#3


http://www.csharphelp.com/archives/archive257.html

#4


你是说的在ASP里还是在ASP+里???

#5


是在Asp里,not Asp+,请问给位高手,在Asp里怎么调用阿
谢啦

#6


dotNET的互操作性非常好.ASP中是可以调用的.不过有一点差别,ASP中可能不能直接调用C#编写的组件,但可以通过COM+环境来做到这一点.
coldljy 推荐的文章中的Exposing Microsoft .NET Framework components to COM clients 一节介绍了具体的方法,之后你可以从COM+中倒出代理包或直接使用这些组件了(强名之后的组件在ASP的使用上和原来的老组件没有太大分别).
这是目前混和环境中的一种不错的办法,用这种方式的组件得益于新的组件结构和编程的方便,但事实上,性能上它可能低于你原来的用VB或VC编写的组件.
如果可以考虑升级ASP到ASP+,ASP的引擎性能低于现在新的ASP+,而所有调用的组件都是以所在的引擎作为宿主的.


#7


你问的问题很好,在.net还没有盛行的今天,应该考虑一下与asp的互操作性

#8


我被你说的问题折磨了几个星期! 
 我也是用C#写的一个UserControl控件,想直接在WebForm中调用 。但是结果很让人失望:基本不行
 即使行,也得在Client安装 . Net FrameWork
 在ASP中调用如下: 
 <object id="Control1"      classid="http:myControl.dll#mycontrol.Control1" 
   height="500" width="600"></object> 
   并在iis中的将相关虚拟目录的执行权限设置为:纯脚本。

#9


这个问题也折磨了我好几天,因为时间紧张,我后来是把用asp+界面替换了原有了asp;这几天我已经相关项目作完,腾出了点时间来研究这个问题,希望能跟大家好好交流。

#10


为什么不能生成server side控件呢? 因为所有在IE中能显示的,都必须能被Html解释,就和 所有的asp.net webcontrol 一样。因为一个WinForm Control 是没办法解析成HTML的 
"while a winform control is downloaded from the server, runs directly on the client machine and draws to the screen using GDI+ instead of HTML"

  Client的WinForm Control必须有restricted security environment,比如访问网络、和本地文件等。由于.Net FrameWork本身更严格的安全要求,所以基于 .Net FrameWork的Control比ActiveX也有更高的安全要求。因而,新一带MS的开发平台不鼓励这样的结构设计。 

  我们习惯把有界面的COM称为Activex 而*面的称为COM server. 
.Net 对COM仍是自持的,但你必须做一些处理,比如:Tlbexp,regasm命令等
但要想想其它工具生成OCX,然后直接能加入到ToolBox中拖放到wevform上,在.Net开发的UserControl已经是不能的了

#11


对了,如果确实要在ASP中调用UserControl,你可以
 到http://gotdotnet.com/team/windowsforms/iesourcing.aspx
有比较详细的介绍

 我对我了解的结果很失望
我不得不用其他工具从新编写我的UserControl供ASP./Net调用
毕竟,要求每个 Client 安装.Net FrameWork是苛刻的

#12


可以,通过引用该NAMESPACE

#13


关注,学习,一起进步!

#14


可以,但你在ASP服务器上有执行CGI的权限,要么ASP是不会让你执行的。

#15


謝謝各位高手的幫助,但能否説明白點。
to ccBoy(小气的神):用COM+使我最開始用的一個方法,結果不理想;
to wenzm(风子驴):我用你的方法試過,因爲以前我寫的Asp程序,調用外部的的組件時就是用這樣的方法,可惜現在不能實現我說的問題;
to triout(Daview):如果是.net正式版的話,可以用這個方法在VB等編輯器裏實現,應該說在Asp裏是可以的,不過我是幾次,結果很令人失望;
to hqywork(华奇英):能夠説明白點,謝了先。

#16


如果你的组件是.Net 写的,只能 <object id="Control1"      classid="http:myControl.dll#mycontrol.Control1" 
   height="500" width="600"></object> 
这样调用,而且Client必须装.net FrameWork(20.8M)

#17


关注……

#18


關注﹐學習

#19


to wenzm(风子驴):你的方法確實是可行的,不過目前要求所有client都安裝.net FrameWork不是很現實;

#20


1. 其实不一定要COM+的,用tlbexp生成一个tlb,然后就可以当COM组件用了。
2. 用managed C++ extension做一个managed->unmanaged DLL包装,然后怎么调都行了。

#21