zoukankan      html  css  js  c++  java
  • 开发,配置,调用三步走构建简单的asp.net webservice(C#)适合初学者阅读

    前两天,工作中遇到需要开发一个简单的webservice

    网上搜索了不少文章,可是讲的很全面的还真是不多。特别是远程调用的例子,好难找。

    所以自己搞定了之后,决定写一篇博客,从开发,配置到远程调用,一步步写个例子,供参考。

    1,开发。

    打开Visual studio.net 2008, 新建项目,选择ASP.NET WebService,给它起名WebServiceSample

    系统自动生成一个helloworld

            [WebMethod]
            
    public string HelloWorld()
            {
                
    return "Hello World";
            }

    前面的标示“[WebMethod]”即表示这个方法可以远程调用。

    只有public 的函数可以标示为“[WebMethod]”.

    下面我们自己写一个简单的加法函数:


            [WebMethod]
            
    public int MyAdd(int i, int j)
            {
                
    return i + j;
            }

    现在按“调试”按钮,出现一个对话框,直接按enter,出现一张网页,上方有两个链接,分别是HelloWorld和MyAdd

    点选MyAdd进入,可以看到一个调试器,在其中输入i和j的参数,就可以调试MyAdd这个函数啦。

    要留意的是,这边调试成功的话,在IIS中调试还是有可能会因为各种原因失败,因为本机调试和远程调试,许多方面是不同的,比如对本地文件的访问权限等。

    远程调试的时候,WebService和一般的ASP.Net网站一样,用户只能访问wwwroot下面的文件哦。

    这张页面下方,有远程调用本WebService的三种方法和各自的返回语句。

    这三种方法调用的时候只是将发送和接受的内容加以改变而已。微软推荐的方法是上面两种。 

    至此,一个最简单的WebService开发完成

    2,配置

    最最简单的配置方法:

    把开发目录下的Web.Config,Service1.asmx,bin目录(只需要copy下面的WebServiceSample.dll)copy到C:\INetPub\WWWRoot\文件夹下。

    如果本机的IIS服务没有安装或者启用的话,在控制面板里安装或者启用IIS服务。

    如果在浏览器中输入http://localhost/service1.asmx会出现刚才调试的时候出现的页面的话,就说明配置成功啦。

    3,远程调用

    本机调用当然不算远程啦。但是我这边远程调用是为了区别直接调用dll说的,使用http方式的调用。其实使用http方式调用,不管是在本机上访问localhost还是在别的机器上访问本机的ip地址,都是一样的。

    在调试页面,有三种调用方法的示例,下面我门以第三种方法为例子展示一下调用代码。

    发送:
    POST 
    /Service1.asmx/MyAdd HTTP/1.1
    Host: localhost
    Content
    -Type: application/x-www-form-urlencoded
    Content
    -Length: length

    i
    =string&j=string
    接收:
    HTTP
    /1.1 200 OK
    Content
    -Type: text/xml; charset=utf-8
    Content
    -Length: length

    <?xml version="1.0" encoding="utf-8"?>
    <int xmlns="http://tempuri.org/">int</int>

    代码如下:


            public static int CallMyAdd(int i, int j)
            {
                
    try
                {
                    String uri 
    = "http://localhost/Service1.asmx/MyAdd";
                    String content 
    = "i=" + i.ToString() + "&j=" + j.ToString(); 
                    HttpWebRequest request 
    = (HttpWebRequest)WebRequest.Create(uri);
                    request.ContentType 
    = "application/x-www-form-urlencoded";
                    
    byte[] contentbyte = Encoding.UTF8.GetBytes(content);
                    request.ContentLength 
    = contentbyte.Length;
                    request.Method 
    = "POST";
                    Stream contentStream 
    = request.GetRequestStream();
                    contentStream.Write(contentbyte, 
    0, contentbyte.Length);
                    request.ProtocolVersion 
    = HttpVersion.Version11;
                    HttpWebResponse response 
    = (HttpWebResponse)request.GetResponse();
                    
    string retString = response.StatusDescription;
                    
    if(retString != "OK")
                    {
                        
    throw new Exception(retString);
                    }
                    Stream responseStream 
    = response.GetResponseStream();
                    StreamReader sr 
    = new StreamReader(responseStream);
                    retString 
    = sr.ReadToEnd();
                    XmlDataDocument xdd 
    = new XmlDataDocument();
                    xdd.LoadXml(retString);                
                    
    int result = int.Parse(xdd.ChildNodes[2].InnerText);
                    
    return result;
                }
                
    catch(Exception e)
                {
                    MessageBox.Show(e.ToString());
                }
                
            }
     
     

    要用另外两种方法调用的话,要自己生成XML文本,还有要修改Content-Type的值。

      wsdl 文件的生成 http://localhost:3310/WebSite1/Service.asmx?wsdl 

    为了将WSDL file转化为源代码文件,我们将利用一个称为wsdl.exe控制台应用程序来产生代码。此工具将解析WSDL文件和其他一些附加文件来产生单一的源代码文件,源代码文件中包含执行Web service所需的所有类、方法、类型。Wsdl.exe将随着Visual Studio .NET 2003 (和.NET SDK)一起被安装。运用此工具,你首先需要打开Visual Studio .NET 2003命令提示控制台,默认情况下,此项位于开始菜单>>程序>> Microsoft Visual Studio .NET 2003的Visual Studio .NET工具。一旦打开,你便可以在以前保存的WSDL文件中操纵命令提示。

    执行下列命令可以使得wsdl.exe产生客户端代理类。

    wsdl /out:temp.cs http://localhost/VvopAmp/VvopAmpSrv.php?wsdl

    客户端代理类保存在 temp.cs 文件中。
  • 相关阅读:
    数据库索引的作用和长处缺点
    ping不通的几种可能原因
    UVA
    strtok、strtok_s、strtok_r 字符串切割函数
    CheckBoxPreference组件
    EM算法原理
    Android中ExpandableListView控件基本使用
    拓扑排序的原理及事实上现
    DropdownList绑定的两种方法
    leetcode第一刷_Length of Last Word
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/1679995.html
Copyright © 2011-2022 走看看