813834 HOW TO:将当前凭据传递到 ASP.NET Web 服务 (From MKBA)

本文引用了下面的 .NET Framework 类库名称空间:

System.Net

概要

本分步指南介绍如何将用户的当前凭据传递给使用 ASP.NET 创建的 XML Web 服务。

CredentialCache 类的 DefaultCredentials 属性包含当前安全上下文的系统凭据。对于客户端应用程序,这些凭据代表用户名、密码和当前登录用户所在的域。客户端凭据不会自动传递。如要将客户端的 Windows 安全上下文传递到 Web 服务,您必须将 Web 服务代理的 Credentials 属性设置为 CredentialCache.DefaultCredentials

返回页首

创建 Web 服务

  1. 启动 Microsoft Visual Studio .NET。使用 Visual C# .NET 或 Visual Basic .NET 创建一个新的 “ASP.NET Web 服务”项目。默认情况下将创建出 Service1.asmx。
  2. 将该项目命名为 MyWebService。
  3. 在解决方案资源管理器中,右键单击 “Service1.asmx”,然后单击“查看代码”。
  4. 在 “Service1.asmx.cs” 文件(如果您使用的是 Visual Basic .NET,则为 “Service1.asmx.vb” 文件)中,删除默认的 WebMethod HelloWorld() 注释。
  5. 在“生成”菜单上,单击“生成解决方案”。
  6. 在您的浏览器中键入下面的 URL 以查看 “Service1” Web 服务说明:

    http://localhost/MyWebService/Service1.asmx

  7. 如要测试 HelloWorld WebMethod,请单击 “HelloWorld” 链接。您会看到 WebMethod 的行为与您预期的一样。
返回页首

为 Web 服务设置集成 Windows 验证

  1. 单击“开始”,指向“设置”,然后单击“控制面板”。
  2. 在控制面板中,双击“管理工具”。
  3. 双击 “Internet 信息服务”。
  4. 展开 “Internet 信息服务”,然后找到 “MyWebService” 虚拟目录。
  5. 右键单击 “MyWebService”,然后单击“属性”。
  6. 单击“目录安全性”选项卡。在“匿名访问和验证控件”下,单击“编辑”。
  7. 在“验证方法”对话框中,单击以选中“集成 Windows 验证”复选框。
返回页首

使用 Web 服务

  1. 使用 Visual C# .NET 或 Visual Basic .NET 创建新的 “ASP.NET Web 应用程序”。将该项目命名为 WebServiceTest。
  2. 在解决方案资源管理器中,右键单击“引用”,然后单击“添加 Web 引用”。
  3. 在“地址”文本框中,为 WebServiceTest 键入下面的 URL:

    http://localhost/MyWebService/Service1.asmx

  4. 单击 “Go”,然后单击“添加引用”。
  5. 在解决方案资源管理器中,右键单击 “WebForm1.aspx”,然后单击“查看代码”。
  6. 在 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
  7. 在“生成”菜单上,单击“生成解决方案”。
  8. 在浏览器中键入下面的 URL 以查看 Service1 Web 服务说明:

    http://localhost/WebServiceTest/WebForm1.aspx

  9. 您可能会收到一条“访问被拒绝”错误消息。出现此错误消息的原因是,进行身份验证时,没有随 Web 服务请求提供您的凭据。
返回页首

将当前凭据传递到 Web 服务

“CredentialCache” 类属于 “System.Net” 名称空间。
  1. 将下面的名称空间声明添加到文件的顶部:

    Visual C# .NET 示例代码
    using System.Net;
    Visual Basic .NET 示例代码
    Imports System.Net
  2. 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
    
  3. 在“调试”菜单上,单击“开始”。“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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值