你会在C#的类库中添加web service引用吗?

时间:2023-02-05 23:41:41

本文并不是什么高深的文章,只是VS2008应用中的一小部分,但小部分你不一定会,要不你试试:

本人对于分布式开发应用的并不多,这次正好有一个项目要应用web service,我的开发环境是vs2008,之所以没有选择现在热门的WCF,本人有如下原因:

1:负责开发Web Service的小组对于vs2008应用不多,更不能奢望令人垂涎的WCF。
     2:项目开发时间有限,根本不许你去拿项目做实验。
     3:项目改动不大,web service足够对付需求。
 
      由于我们的项目是从1.1直接升级到3.5,升级的时候,把web项目直接改成类库,这样无论环境发生多大的变化,只要能够兼容低级版本,所有原来的文件都是能用的,例如,1.1中创建一个网页,会有一个resx的资源文件,但是3.5中创建的网页则是designer.cs,以后如果再升级,只要把相关新文件类型创建好,然后添加到类库中,这样同样可以享用高级版本的功能,说的比较含糊,不知道大家是否明白。

现在要做的就是在这样的类库中引用web service,凭直觉就认为,只要添加一下引用不就行了吗?其实是这样的吗?
    
     先说下在web application项目中如何引用:

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

你会在C#的类库中添加web service引用吗?

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


你会在C#的类库中添加web service引用吗?

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

你会在C#的类库中添加web service引用吗?

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

你会在C#的类库中添加web service引用吗?

这应该就是最基本的添加web service引用的方法了。当时我也是按照这样的思路去添加。发现类库中点击右键并没有出现我熟悉的 “添加web 引用”,而出现图五效果:

你会在C#的类库中添加web service引用吗?

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

你会在C#的类库中添加web service引用吗?

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

你会在C#的类库中添加web service引用吗?

然而调用的时候并不像想像的那么成功,结果可想而之,我添加的WCF服务。这里错误代码我就不好意思帖了。知道引用对象错了后,就是让类库来添加web service,然而点击类库后,右键并没有"添加web 服务"的选项。如何让类库支持添加web service引用成了我最大的难题。此时我咨询了同事,基本排除程序问题,因为通过网站形式可以正常访问web service。

园子里的朋友你们在VS08中的类库会添加web servece引用吗?我baidu了一下午,毫无结果,最好只好再问别的同事,几经周折,有一个太有才的同事说类库可以添加web service引用,我不敢相信,我把方法贴出来show一下;

第一:对目标类库点击右键,如图六:
        第二:点击“添加服务引用”如图八:

你会在C#的类库中添加web service引用吗?

关键是图左下角的“高级”按键。点击如图九:

你会在C#的类库中添加web service引用吗?

第三:注意了,同样是左下角,“添加WEB引用”的按钮终于出现了,点击如图十:之后的操作就不多说了。

你会在C#的类库中添加web service引用吗?

到这里,就最终完成了类库中添加web service引用的目的。操作并不复杂,只是实在是想不明白,VS为什么要把添加web引用放的这么隐蔽呢,难道是为了WCF的推广?

原文:http://www.cnblogs.com/ASPNET2008/archive/2008/09/16/1292028.html

补充:调用方法

添加web引用时候的URL:http://xxxxx/WebInterface?WSDL

WebInterface为接口名称

 WebInterface vw = new WebInterface();
var res = vw.pushData("<data>1</data>", , true); ViewBag.Result = res.resultDesc;