C#中调用Web Service.docx

上传人:b****0 文档编号:283585 上传时间:2022-10-08 格式:DOCX 页数:25 大小:676.36KB
下载 相关 举报
C#中调用Web Service.docx_第1页
第1页 / 共25页
C#中调用Web Service.docx_第2页
第2页 / 共25页
C#中调用Web Service.docx_第3页
第3页 / 共25页
C#中调用Web Service.docx_第4页
第4页 / 共25页
C#中调用Web Service.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C#中调用Web Service.docx

《C#中调用Web Service.docx》由会员分享,可在线阅读,更多相关《C#中调用Web Service.docx(25页珍藏版)》请在冰豆网上搜索。

C#中调用Web Service.docx

C#中调用WebService

如何创建和发布WebService

WEB服务可以说是下一代WEB应用程序的基础,无论客户端是WINDOWS应用、ASP.NETWebForm程序、甚至其他语言的客户端,都可以与同一个WEB服务通信,其平台和语言无关性使其有了广阔的发展空间。

利用VS2005和IIS我们可以很容易地发布一个WEBSERVICE,因为其中有几个细节需要注意,所在初学者常常在这里出现问题,现通过一个简单的例子说明如何创建和发布一个WEBSERVICE。

环境:

WindowsServer2003,.Net FrameWork2.0,IIS6.0

工具:

VS2005

1.首先VS2005中新建一个WEB服务项目。

打开“文件”-“新建”-“网站”,在对话框中选择“ASP.NETWeb服务”,VS2005会自动生成一个Service.cs文件,包含如下代码:

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

[WebService(Namespace = "http:

//tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service :

 System.Web.Services.WebService

{

    public Service () {

        //如果使用设计的组件,请取消注释以下行 

        //InitializeComponent(); 

    }

    [WebMethod(Description="最简单的方法")]

    public string HelloWorld() {

        return "Hello World";

    }

    

}

你可以在这里修改自己的命名空间,加入自己的方法,但本文只是为了说明如何创建和发布,所以对Service.cs不做任何更改。

若要修改,则写方法,注意前面要加上[WebMethod]。

可以按F5运行此页面,同时也可以设置断点进行调试(前提是要将web.config中设为true,而实际项目运行中,则改为false)

2.生成网站

很简单,“生成”-“生成网站”或直接Shift+F6

3.发布网站

也是简单,“生成”-“发布网站”,这里会弹出一个对话框,什么也不需要修改,记下发布的目录。

比如:

D:

\我的文档\VisualStudio2005\Projects\WebSite1\PrecompiledWeb\WebSite1,我们需要目录下的文件。

4.配置IIS

在你的WEB目录下一个文件夹,比如webservice,并将第3步发布目录中的所有文件和目录拷贝到这个目录中,打开IIS,找到你的站点,在这个webservice目录上点右键,选择属性,在弹出对话框的“目录”选择项卡中点击“创建”按钮,然后确定即可。

到这时,已经大功告成,你可以通过访问http:

//域名/webservice/Service.asmx来验证。

页面会出现如下图所示内容:

注意:

除了需要在IIS中对服务目录创建程序外,还要注意防火墙或杀毒软件的设置,我在首次访问service.asmx文件时,杀毒软件报告w3wp.exe在系统文件夹中生成asp_code.dll等,应该允许其他创建,否则会无法访问。

通过这样简单的方法,你可以轻松建立自己的WEB服务,在同一站点还可以有多个WEB服务

注意:

其实从上面的第3步开始可以简化:

“生成”-“发布网站”,这里会弹出一个对话框,更改目录位置,选择左边的本地IIS,右边选择默认网站,选择某个目录即可,再按确定即可,不需要第四步了。

下面开始在项目中调用此服务:

(调用之前要现在项目中添加服务引用)

第一:

对web项目点击右键,如图一。

第二:

点击添加web引用,如下图二.

第三:

查找可用的webservice,如果是本解决方案内的直接搜索就行,如果是外部的,就输入有效地址然后查询,这里面可以测试webservice,如图三:

第四:

添加引用成功后就会出现WebReferences目录.如图四,然后就是调用了。

这应该就是最基本的添加webservice引用的方法了。

当时我也是按照这样的思路去添加。

发现类库中点击右键并没有出现我熟悉的“添加web引用”,而出现图五效果:

此时我认为可能是升级的原因变成"添加服务引用",接下来的操作和上面操作相同.点击出现图六;

输入webservice地址,测试连接都成功,添加成功后出现图七:

然而调用的时候并不像想像的那么成功,结果可想而之,我添加的WCF服务。

这里错误代码我就不好意思帖了。

知道引用对象错了后,就是让类库来添加webservice,然而点击类库后,右键并没有"添加web服务"的选项。

如何让类库支持添加webservice引用成了我最大的难题。

此时我咨询了同事,基本排除程序问题,因为通过网站形式可以正常访问webservice。

园子里的朋友你们在VS08中的类库会添加webservece引用吗?

我搜索了一下午,毫无结果,最好只好再问别的同事,几经周折,我把方法贴出来show一下;

第一:

对目标类库点击右键,如图六:

第二:

点击“添加服务引用”如图八:

关键是图左下角的“高级”按键。

点击如图九:

第三:

注意了,同样是左下角,“添加WEB引用”的按钮终于出现了,点击如图十:

之后的操作就不多说了。

到这里,就最终完成了C#的类库中添加WebService引用的目的。

操作并不复杂,只是实在是想不明白,VS为什么要把添加web引用放的这么隐蔽呢,难道是为了WCF的推广?

而在项目中实际调用时这样写:

SerRef.Servicews=newSerRef.Service();//SerRef是web引用名。

stringsst=ws.HelloWorld();//HelloWorld是服务方法。

若是后来重新对服务进行添加了新的服务方法,注意别忘了点击服务别名,右键—》“更新web引用”。

运行项目时若出现类似“权限。

”的错误时,请按照给出的提示(vs2008中会有建议操作的,点下就ok了)更正。

好像在调试过程中不能在调用方法时单步调试。

上面是发布与调用web服务,而WCF服务是类似的(建立是应选择WCF服务,不要选择新建”-“网站”,在对话框中选择“ASP.NETWeb服务”)

在webservice中如何得到客户端IP,

     通过代理,获取真实的ip

if(Context.Request.ServerVariables["HTTP_VIA"]!

=null)

{

ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();

}

else

{

ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString();

}

C#WinForm利用WebServiceAPI查询数据库并显示到客户端

我们知道C#的WebService API的返回值可以是DataSet类型,这就使得我们可以通过WebServiceAPI来查询数据库,这个功能将成为我们许多应用的基础。

下面我们用一个简单的Winform调用的例子来说明这个问题。

首先我们有一个SQLServer2000数据库book在服务器webserviceserver上,book库中有张表bookinfo,包含书名、作者、价格等字段,数据库用户sa,密码123456。

我们利用VS2005创建一个WebService项目并发布出去,这里不再详述如何建立和发布,如有不清楚的地方请参阅相关资料。

也可以参考我的另两篇文章:

SERVICE)

ServiceAPI)

我们在项目的Service.cs里编写一个查询数据库的API,为了简化问题,我们编写的这个API只接受一个字符串参数,用来在书名字段做前方匹配的查询,返回一个DataSet,这个DataSet中包含一个名为bookinfo的DataTable,bookinfo中含有书名、作者和价格字段,代码如下:

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

using System.Data;

using System.Data .SqlClient;

[WebService(Namespace = 

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service :

 System.Web.Services.WebService

{

    //定义一个sqlconnection连接成员

    SqlConnection sqlconn = new SqlConnection("Server=webserviceserver;Initial Catalog=book;uid=sa;pwd=123456");//貌似必须用sa方式登陆啊

    public Service () {

        //如果使用设计的组件,请取消注释以下行 

        //InitializeComponent(); 

    }

    [WebMethod]

    public string HelloWorld() {

        return "欢迎使用我的WEB服务!

";

    }

    [WebMethod]

    public DataSet searchBook(string bookname)

    {

        sqlconn.Open();

        string sql = "select top 50 书名,作者,价格 from bookinfo where 书名 like '" + bookname + "%' order by id desc";

        SqlDataAdapter da = new SqlDataAdapter(sql, sqlconn);

        DataSet ds = new DataSet();

        da.Fill(ds,"bookinfo");

        return ds;

    }

}

编写好后将WebService发布出去。

现在我们来建立一个winform的Windows应用程序项目,并在项目中将我们刚刚发布的WEBService做为一个WEB引用添加进来。

在项目窗体中创

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1