C#中调用Web ServiceWord格式.docx
- 文档编号:13213445
- 上传时间:2022-10-08
- 格式:DOCX
- 页数:25
- 大小:676.36KB
C#中调用Web ServiceWord格式.docx
《C#中调用Web ServiceWord格式.docx》由会员分享,可在线阅读,更多相关《C#中调用Web ServiceWord格式.docx(25页珍藏版)》请在冰豆网上搜索。
"
http:
//tempuri.org/"
)]
[WebServiceBinding(ConformsTo
WsiProfiles.BasicProfile1_1)]
public
class
Service
:
System.Web.Services.WebService
{
()
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod(Description="
最简单的方法"
string
HelloWorld()
return
Hello
World"
;
你可以在这里修改自己的命名空间,加入自己的方法,但本文只是为了说明如何创建和发布,所以对Service.cs不做任何更改。
若要修改,则写方法,注意前面要加上[WebMethod]。
可以按F5运行此页面,同时也可以设置断点进行调试(前提是要将web.config中<
compilationdebug="
true"
>
设为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
REMOTE_ADDR"
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中含有书名、作者和价格字段,代码如下:
System.Data;
System.Data
.SqlClient;
//定义一个sqlconnection连接成员
SqlConnection
sqlconn
new
SqlConnection("
Server=webserviceserver;
Initial
Catalog=book;
uid=sa;
pwd=123456"
);
//貌似必须用sa方式登陆啊
[WebMethod]
欢迎使用我的WEB服务!
DataSet
searchBook(string
bookname)
sqlconn.Open();
sql
select
top
50
书名,作者,价格
from
bookinfo
where
书名
like
'
+
bookname
%'
order
by
id
desc"
SqlDataAdapter
da
SqlDataAdapter(sql,
sqlconn);
ds
DataSet();
da.Fill(ds,"
bookinfo"
ds;
编写好后将WebService发布出去。
现在我们来建立一个winform的Windows应用程序项目,并在项目中将我们刚刚发布的WEBService做为一个WEB引用添加进来。
在项目窗体中创
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C#中调用Web Service C# 调用 Web