创建代理来访问.NET Web Service

ZDNet软件频道 时间:2005-09-28 作者:Phillip Perkins |  我要评论()
本文关键词:
学习在.NET中如何创建一个代理来访问NET Web Service。Phillip Perkins生成并注册了一个可以在VB6中使用的代理组件,并且给出了在VB6中使用该代理的示例代码。
在我以前的文章里,我介绍了使用VB6来访问.NET Web service的方案。同时,我也展示了Web service相关的示例代码并且讨论了如何使该服务运行起来。这里我将说明如何在.NET中创建一个代理来访问.NET Web service。我还会生成并注册了一个可以在VB6中使用的代理组件。最后,我会给出在VB6中使用该代理的示例代码。

创建Web service

.NET为架设与访问Web services做了许多内部工作,因此我使用.NET来创建一个Web service。我依靠ASP.NET Web Matrix's Web Service Proxy Generator来生成程序代码(生成代码的作用是在.NET中访问Web Service)。在菜单的“Tools”选项中,选择“Web Service Proxy Generator”。要完成该步骤你必须输入的信息有WSDL URL,代理的命名空间,输出目录以及源代码文件的名称。WSDL URL只不过是你的.asmx Web service文件的URL。你可以选择任意的命名空间,不过最好保持其一致性。例如,我的命名空间被设置为MyWebServiceProxy,并使用UserServiceProxy.cs作为源文件的名称。考虑到我接下来将创建一个.NET工程并加入这个文件,我使用的输出目录与即将创建的工程所在目录一致。(注意:不要生成汇编文件)

开始创建工程

现在可以在in Visual Studio .NET中创建一个新的工程了。这个工程的输出类型应当被设置为Class Library工程。我将其我的工程命名为MyWebServiceProxy。在这个工程里,我加入了源文件UserServiceProxy.cs。此外,我还改变了这个类中的一些可见性声明。最后的代码与列表A中的类似。

接下来,按照以下的步骤

在Project Explorer上点击鼠标右键,选择“Properties”。在“Configuration Properties | Build”标签栏,将“Register For COM Interop”选项设置为True。
为了生成这个工程,你要在VB6中创建一个新的Standard EXE工程。
为MyWebServiceProxy类型库添加一个引用。
在默认的窗体上,加入一个CommandButton控件。
在这个CommandButton控件的Click事件中,加入代码。

IntelliSense为你提供了MyWebServiceProxy的公共类;但是,你还不能使用这些类的成员(比如,GetUser() 方法, 等等)。这并不意味着你不能使用它们。这仅仅表示你必须通过引用或者指针。你还可以通过实现一个接口来解决这个问题(这可能是一个更巧妙的解决方法,但是就这篇文章的目的而言,这样做没有必要)

运行这段代码并查看你的运行结果。如果每个步骤都是正确完成的,你应该可以看到一个消息框,显示id为1的用户的名字与姓氏。

克服安全性障碍

你可以遇到的最大障碍就是安全性。如果你遇到一个“访问拒绝”错误,你会有两个选项。第一是模仿IIS中的匿名账户。在你的Web service中的web.config里,一定要加入Identity结点并将Impersonate属性设置为True。在Internet Services Manager中,改变你.asmx文件的安全属性。设置系统的匿名用户或者域用户以使其有足够的权限来访问Web service所必需的资源。如果这一切都失败了,就使用一个管理员账号来进行本次练习。再次运行代码并查看运行结果。

另外一个选项是在web.config文件的Identity结点里设置userName以及 password属性。同样,将其设置为一个权限合适的账号。另外,别忘了包含impersonate属性。



责任编辑:邢胜

欢迎投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134