因为同事说在调用webservice的时候会弹出身份验证的窗口,直接调用会返回401,原因是站点部署的时候设置了身份验证(账号名称自己配置)。因而在调用的时候需要加入身份验证的凭证。

至于如何获取身份验证的凭据呢?可以使用微软提供的NetworkCredential(命名空间是System.Net),代码如下。

  1. using System;
  2. using System.Net;
  3. using webserviceSync.helloWebservice;
  4.  
  5. namespace webserviceSync
  6. {
  7. public partial class WebForm1 : System.Web.UI.Page
  8. {
  9. protected void Page_Load(object sender, EventArgs e)
  10. {
  11. MySoapHeader my = new MySoapHeader();
  12. my.UserName = "";
  13. Response.Write(webserviceClient.HelloWorld(my));
  14.  
  15. }
  16.  
  17. /// <summary>
  18. /// 获取网络凭证
  19. /// </summary>
  20. /// <returns></returns>
  21. public static NetworkCredential GetCredential()
  22. {
  23. //return new NetworkCredential("Administrator", "888888", "192.168.2.58");//简单直接
  24. return (NetworkCredential)CredentialCache.DefaultCredentials;//需要本地设置凭据
  25. }
  26.  
  27. /// <summary>
  28. /// 验证凭证是否能通过
  29. /// </summary>
  30. /// <returns></returns>
  31. public static bool IsVerifySucess()
  32. {
  33. string url = "http://192.168.2.58:7777/WebService.asmx?wsdl";
  34. WebResponse webResponse = null;
  35. try
  36. {
  37. WebRequest webRequest = WebRequest.Create(url);
  38. webRequest.Credentials = GetCredential();
  39. webRequest.Timeout = ;
  40. webResponse = webRequest.GetResponse();
  41. }
  42. catch (Exception ex)
  43. { throw ex; }
  44. return true;
  45. }
  46.  
  47. /// <summary>
  48. /// 属性
  49. /// </summary>
  50. private static WebServiceSoapClient _webserviceClient = null;
  51. /// <summary>
  52. /// webservice服务
  53. /// </summary>
  54. public static WebServiceSoapClient webserviceClient
  55. {
  56. get
  57. {
  58. if (_webserviceClient == null)
  59. {
  60. bool isSucess = IsVerifySucess();
  61. if (isSucess == true)
  62. {
  63. _webserviceClient = new WebServiceSoapClient();
  64. _webserviceClient.ClientCredentials.Windows.ClientCredential = GetCredential();//这属性........
  65. }
  66. }
  67. return _webserviceClient;
  68. }
  69. }
  70.  
  71. }
  72. }

如何在本地设置凭据可以参考http://jingyan.baidu.com/article/a3aad71aaa32eeb1fb0096c8.html

调用webservice进行身份验证的更多相关文章

  1. WebService 之 身份验证

    在项目开发,我们经常会使用WebService,但在使用WebService时我们经常会考虑到了WebService是安全问题,很容易想到通过一组用户名与密码来防止非法用户的调用 . 一.Networ ...

  2. ANDROID调用webservice带soapheader验证

    最近的一个项目中调用webservice接口,需要验证soapheader,现将解决方法记录如下:(网上资料出处太多,就不做引用,原作者如看到,如有必要添加请通知) 1.先看接口 POST /webs ...

  3. 为WebService添加身份验证的两种方法

    方法一:SoapHeader 辅助类:MySoapHeader //SoapHeader 添加引用 using System.Web.Services.Protocols; #region 配置登录标 ...

  4. ASP.NET没有魔法——ASP.NET Identity 的“多重”身份验证

    ASP.NET Identity除了提供基于Cookie的身份验证外,还提供了一些高级功能,如多次输入错误账户信息后会锁定用户禁止登录.集成第三方验证.账户的二次验证等,并且ASP.NET MVC的默 ...

  5. asp.net core 3.x 身份验证-1涉及到的概念

    前言 从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列后,脑子里对asp.net core的身份验证原理有个大致印象.至于身份验证是啥?与授权有啥联系?就不介绍了,太啰嗦. ...

  6. .netcore 自定义多种身份验证方法混用

    背景: 公司项目有很多租户,每个租户的系统都可能调用我们的租户服务,原来的解决方案是为每个租户提供一个service.随着租户的增多,service也多了起来,但是每个service里的逻辑都是一样的 ...

  7. Forms身份验证 知识总结

    最简单的Forms验证实现方法:FormsAuthentication.SetAuthCookie()方法,传递一个登录名即可FormsAuthentication.SignOut()方法退出Form ...

  8. android下身份验证方式调用webservice

    在企业开发领域,webservice还是经常被用到的服务体系,因为他对安全事务支持都比较好. 有时候,我们就需要在android下调用后端的webservice服务,因为在内部网络环境下,所有需要ba ...

  9. 调用WebService时加入身份验证,以拒绝未授权的访问

    众所周知,WebService是为企业需求提供的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务.但在有些时候的某些应用服务不希望被未授权访问,那么此时我们可以一下几种 ...

随机推荐

  1. dagger2系列之Scope

    Dagger的Scope注解代表的是作用域,通过实现自定义@Scope注解,标记当前生成对象的使用范围,标识一个类型的注射器只实例化一次,在同一个作用域内,只会生成一个实例, 然后在此作用域内共用一个 ...

  2. 步入angularjs directive(指令)--准备工作熟悉hasOwnProperty

    在讲解directive之前,先做一下准备工作,为何要这样呢? 因为我们不是简单的说说directive怎么用,还要知道为什么这么用!(今天我们先磨磨刀!). 首先我们讲讲js 基础的知识--hasO ...

  3. ZKWeb网页框架1.3正式发布

    本次更新的内容有 更新引用包版本 Microsoft.AspNetCore.Hosting.Abstractions 1.1.0 Microsoft.AspNetCore.Http.Abstracti ...

  4. npm 使用小结

    本文内容基于 npm 4.0.5 概述 npm (node package manager),即 node 包管理器.这里的 node 包就是指各种 javascript 库. npm 是随同 Nod ...

  5. js闭包 和 prototype

    function test(){ var p=200; function q(){ return p++; } return q; } var s = test(); alert(s()); aler ...

  6. Git分布式版本控制教程

    Git分布式版本控制Git 安装配置Linux&Unix平台 Debian/Ubuntu $ apt-get install git Fedora $ ) $ dnf and later) G ...

  7. 分页插件--根据Bootstrap Paginator改写的js插件

    刚刚出来实习,之前实习的公司有一个分页插件,和后端的数据字典约定好了的,基本上是看不到内部是怎么实现的,新公司是做WPF的,好像对于ASP.NET的东西不多,导师扔了一个小系统给我和另一个同事,指了两 ...

  8. Oracle创建表空间

    1.创建表空间 导出Oracle数据的指令:/orcl file=C:\jds.dmp owner=jds 导入Oracle数据的指令:imp zcl:/orcl file=C:\jds.dmp fu ...

  9. [AlwaysOn Availability Groups] 健康模型 Part 2 ——扩展

    健康模型扩展 第一部分已经介绍了AlwayOn健康模型的概述.现在是创建一个自己的PBM策略,然后设置为制定的归类.创建这些策略,创建之后修改一下配置,dashboard就会自动评估这些策略. 场景, ...

  10. kafka

    2016-11-13  20:48:43 简单说明什么是kafka? Apache kafka是消息中间件的一种,我发现很多人不知道消息中间件是什么,在开始学习之前,我这边就先简单的解释一下什么是消息 ...