本文引用了下面的 .NET Framework 类库名称空间:
System.Net
概要
本分步指南介绍如何将用户的当前凭据传递给使用 ASP.NET 创建的 XML Web 服务。CredentialCache 类的 DefaultCredentials 属性包含当前安全上下文的系统凭据。对于客户端应用程序,这些凭据代表用户名、密码和当前登录用户所在的域。客户端凭据不会自动传递。如要将客户端的 Windows 安全上下文传递到 Web 服务,您必须将 Web 服务代理的 Credentials 属性设置为 CredentialCache.DefaultCredentials。
返回页首
创建 Web 服务
- 启动 Microsoft Visual Studio .NET。使用 Visual C# .NET 或 Visual Basic .NET 创建一个新的 “ASP.NET Web 服务”项目。默认情况下将创建出 Service1.asmx。
- 将该项目命名为 MyWebService。
- 在解决方案资源管理器中,右键单击 “Service1.asmx”,然后单击“查看代码”。
- 在 “Service1.asmx.cs” 文件(如果您使用的是 Visual Basic .NET,则为 “Service1.asmx.vb” 文件)中,删除默认的 WebMethod HelloWorld() 注释。
- 在“生成”菜单上,单击“生成解决方案”。
- 在您的浏览器中键入下面的 URL 以查看 “Service1” Web 服务说明:
http://localhost/MyWebService/Service1.asmx
- 如要测试 HelloWorld WebMethod,请单击 “HelloWorld” 链接。您会看到 WebMethod 的行为与您预期的一样。
为 Web 服务设置集成 Windows 验证
- 单击“开始”,指向“设置”,然后单击“控制面板”。
- 在控制面板中,双击“管理工具”。
- 双击 “Internet 信息服务”。
- 展开 “Internet 信息服务”,然后找到 “MyWebService” 虚拟目录。
- 右键单击 “MyWebService”,然后单击“属性”。
- 单击“目录安全性”选项卡。在“匿名访问和验证控件”下,单击“编辑”。
- 在“验证方法”对话框中,单击以选中“集成 Windows 验证”复选框。
使用 Web 服务
- 使用 Visual C# .NET 或 Visual Basic .NET 创建新的 “ASP.NET Web 应用程序”。将该项目命名为 WebServiceTest。
- 在解决方案资源管理器中,右键单击“引用”,然后单击“添加 Web 引用”。
- 在“地址”文本框中,为 WebServiceTest 键入下面的 URL:
http://localhost/MyWebService/Service1.asmx
- 单击 “Go”,然后单击“添加引用”。
- 在解决方案资源管理器中,右键单击 “WebForm1.aspx”,然后单击“查看代码”。
- 在 WebForm1 的“设计视图”中,双击 “WebForm1” 以打开 Page_Load 事件代码。按如下所示更改 Page_Load 事件代码:
Visual C# .NET 示例代码private void Page_Load(object sender, System.EventArgs e) { // Start an instance of the Web Service client-side proxy. localhost.Service1 myProxy = new localhost.Service1(); Response.Write( myProxy.HelloWorld()); }
Visual Basic .NET 示例代码Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Start an instance of the Web Service client-side proxy.Dim myProxy As localhost.Service1 = New localhost.Service1() Response.Write(myProxy.HelloWorld()) End Sub
- 在“生成”菜单上,单击“生成解决方案”。
- 在浏览器中键入下面的 URL 以查看 Service1 Web 服务说明:
http://localhost/WebServiceTest/WebForm1.aspx
- 您可能会收到一条“访问被拒绝”错误消息。出现此错误消息的原因是,进行身份验证时,没有随 Web 服务请求提供您的凭据。
将当前凭据传递到 Web 服务
“CredentialCache” 类属于 “System.Net” 名称空间。- 将下面的名称空间声明添加到文件的顶部:
Visual C# .NET 示例代码using System.Net;
Visual Basic .NET 示例代码Imports System.Net
- 将 DefaultCredentials 分配给 Web 服务客户端代理的 Credentials 属性。为此,按如下所示更改 Page_Load 事件的代码:
Visual C# .NET 示例代码:private void Page_Load(object sender, System.EventArgs e) { // Start an instance of the Web service client-side proxy. localhost.Service1 myProxy = new localhost.Service1(); myProxy.Credentials = System.Net.CredentialCache.DefaultCredentials; Response.Write( myProxy.HelloWorld()); }
Visual Basic .NET 示例代码Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Start an instance of the Web service client-side proxy.Dim myProxy As localhost.Service1 = New localhost.Service1() myProxy.Credentials = System.Net.CredentialCache.DefaultCredentials Response.Write(myProxy.HelloWorld()) End Sub
- 在“调试”菜单上,单击“开始”。“Hello World” 将出现在浏览器中。
参考
有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:811318 PRB:"Access Denied" Error Message When You Call a Web Service While Anonymous Authentication Is Turned Off
有关详细信息,请访问下面的 Microsoft 网站:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetlpMSDN.asp
返回页首这篇文章中的信息适用于:
- Microsoft Web Services (included with the .NET Framework) 1.0
- Microsoft ASP.NET (included with the .NET Framework) 1.0
- Microsoft Visual C# .NET (2002)
- Microsoft Visual Basic .NET (2002)
最近更新: | 2003-6-12 (1.0) |
关键字 | kbWebServices kbWebForms kbSecurity kbAuthentication kbHOWTOmaster KB813834 kbAudDeveloper |