开发,配置,调用-三步走构建简单的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]”.

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

ContractedBlock.gif ExpandedBlockStart.gif Code
        [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 >

 

代码如下:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
        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的值。

转载于:https://www.cnblogs.com/farrah/archive/2009/04/03/1429099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值