CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

高手请进,来者有分

楼主DNet()2002-04-01 16:26:39 在 .NET技术 / C# 提问

请问高手,能否在Asp里直接调用C#编写的组件,如果可以,怎么调用? 问题点数:100、回复次数:19Top

1 楼DNet()回复于 2002-04-01 16:27:22 得分 0

asp是vs6.0Top

2 楼sinsky(十方)回复于 2002-04-01 16:37:44 得分 5

用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();  
   
  其它调用类似Top

3 楼coldljy(青山隐隐)回复于 2002-04-01 17:22:28 得分 5

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

4 楼srnld(天涯)回复于 2002-04-01 17:52:57 得分 2

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

5 楼DNet()回复于 2002-04-01 18:24:11 得分 0

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

6 楼ccBoy(小气的神)回复于 2002-04-01 18:50:24 得分 10

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

7 楼yinjialiang(夜半歌手)回复于 2002-04-01 19:36:51 得分 2

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

8 楼wenzm(魔术师)回复于 2002-04-01 20:03:48 得分 20

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

9 楼jixian1977(极限_2001)回复于 2002-04-01 20:11:12 得分 30

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

10 楼wenzm(魔术师)回复于 2002-04-01 20:15:23 得分 0

为什么不能生成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已经是不能的了  
  Top

11 楼wenzm(魔术师)回复于 2002-04-01 20:17:50 得分 0

对了,如果确实要在ASP中调用UserControl,你可以  
    到http://gotdotnet.com/team/windowsforms/iesourcing.aspx  
  有比较详细的介绍  
   
    我对我了解的结果很失望  
  我不得不用其他工具从新编写我的UserControl供ASP./Net调用  
  毕竟,要求每个   Client   安装.Net   FrameWork是苛刻的Top

12 楼triout(笨牛)回复于 2002-04-02 13:52:53 得分 5

可以,通过引用该NAMESPACETop

13 楼redbirdli(火鸟)回复于 2002-04-02 17:37:37 得分 2

关注,学习,一起进步!Top

14 楼hqywork(华奇英)回复于 2002-04-02 22:03:24 得分 5

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

15 楼DNet()回复于 2002-04-03 08:21:01 得分 0

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

16 楼wenzm(魔术师)回复于 2002-04-03 09:00:12 得分 0

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

17 楼nohbday(翔)回复于 2002-04-03 17:31:17 得分 2

关注……Top

18 楼thorkhan(北方的河)回复于 2002-04-03 21:06:54 得分 2

關注﹐學習Top

19 楼DNet()回复于 2002-04-05 13:06:17 得分 0

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

20 楼qqchen79(知秋一叶)回复于 2002-04-06 00:43:09 得分 10

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

相关问题

  • 抢分者请进!
  • 请进,发言者有分
  • !!高分请教!!!进者有分!!!!
  • 用过windows.net的请进(进者有分!)
  • C++程序员请进,进者有分
  • 对JBuilder熟悉者请进(200分请教,达者就有分)
  • DDK fans 请进,见者有分。
  • 请求帮助,进者有分
  • 请leader(行者)进来领分!谢谢
  • 请进来看!会者给200分!

关键词

  • .net
  • .net framework
  • c#
  • 组件
  • asp
  • 界面
  • framework
  • 执行
  • client
  • html

得分解答快速导航

  • 帖主:DNet
  • sinsky
  • coldljy
  • srnld
  • ccBoy
  • yinjialiang
  • wenzm
  • jixian1977
  • triout
  • redbirdli
  • hqywork
  • nohbday
  • thorkhan
  • qqchen79

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo