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

解决方案 »

  1.   

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

  2.   

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

  3.   

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

  4.   

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

  5.   

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

  6.   

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

  7.   

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

  8.   

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

  9.   

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

  10.   

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

  11.   

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

  12.   

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

  13.   

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

  14.   

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