原理:webservice所在的系统中,在系统域中建立用于登录的软件的用户和密码,软件登录时将用户名、密码和登录的本机的域的名字通过webService的NetworkCredential传递到webService中通过一个方法得到域中的用户、密码和域进行匹配,从而得到是否有权限

webservice代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services; using System.Data;
using System.Net;
using System.Data.SqlClient; namespace WebServiceSocket
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{ /// <summary>
/// 读取数据表数据统一方法
/// </summary>
/// <param name="where">查询条件</param>
/// <param name="tableName">对应数据表名</param>
/// <param name="Credential">授权凭证</param>
/// <returns></returns>
[WebMethod(Description = "功能:[SQL]读取数据方法,返回值DS", EnableSession = false)]
public DataSet GetTableDataInfo(string where, string tableName, NetworkCredential Credential)
{
try
{
string proc = "select * from " + tableName;
proc = string.Format(proc, where); SqlConnection con = new SqlConnection();
DataSet ds = new DataSet();
try
{
con = new SqlConnection("server=192.168.*.***;database=****;uid=sa;pwd=****");
con.Open(); SqlDataAdapter da = new SqlDataAdapter(proc, con);
da.SelectCommand.CommandTimeout = ;
da.Fill(ds);
}
catch
{
ds = null;
}
finally
{
con.Close();
}
return ds;
}
catch { return null; }//, NetworkCredential Credential
}
}
}

调用代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Runtime.Serialization; namespace clientWinform
{
public partial class Form1 : Form
{ public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
//ServiceSocket.Service1SoapClient so = new ServiceSocket.Service1SoapClient();
//DataSet ds = so.GetTableDataInfo("", "[LYPMMISDB].[Zeda].[tblist]", Credential);
//dataGridView1.DataSource = ds.Tables[0]; WebReference.Service1 de = new WebReference.Service1();
WebReference.NetworkCredential app = new WebReference.NetworkCredential();
app.UserName = "";
app.Password = "";
DataSet ds = de.GetTableDataInfo("", "****", app);
dataGridView1.DataSource = ds.Tables[];
} }
}

截图:

C#调用Web Service时的身份验证的更多相关文章

  1. C# 调用 Web Service 时出现 : 407 Proxy Authentication Required错误的解决办法

    // 记得 using System.Net; System.Net.WebProxy myProxy = new System.Net.WebProxy("localhost:9099&q ...

  2. 使用Android应用调用Web Service

    Java本身提供了丰富的Web  Service支持,比如Sun公司指定的JAX-WS  2规范,还有Apache开源组织所提供的Axis1.Axis2.CXF等,这些技术不仅可以用于非常方便地对外提 ...

  3. ASP.NET4.0中JavaScript脚本调用Web Service 方法

    环境:VS2019  .net 4.0 framework 根据教材使用ScriptManager在JavaScript中调用Web service 时,失败.现将过程和解决方法记录如下: 1.定义W ...

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

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

  5. 无法在Web服务器上启动调试,与Web服务器通信时出现身份验证错误

    问题描述: 我使用的是修改hosts,模拟真实网址来进行调试的.具体是这样的:我修改hosts文件,把某个域名,如www.163.com映射为127.0.0.1,然后在IIS信息管理器中,创建一个网站 ...

  6. ORACLE存储过程调用Web Service

    1. 概述 最近在ESB项目中,客户在各个系统之间的服务调用大多都是在oracle存储过程中进行的,本文就oracle存储过程调用web service来进行说明.其他主流数据库,比如mysql和sq ...

  7. C#开发和调用Web Service

    http://blog.csdn.net/h0322/article/details/4776819 1.1.Web Service基本概念 Web Service也叫XML Web Service ...

  8. php5调用web service

    工作中需要用php调用web service接口,对php不熟,上网搜搜,发现关于用php调用web service的文章也不多,不少还是php4里用nusoap这个模块调用的方法,其实php5里已经 ...

  9. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

随机推荐

  1. Stream To String , String To Stream

    public static string StreamToString(Stream stream) { stream.Position = 0; using (StreamReader stremR ...

  2. Oracle 检验身份证是否正确的存储过程

    ) ) ); ); ); ); ); ); ); ; , , , , , , , , , , , , , , , , , ); ;  , ) );  ..  loop )) ) ); , )), ), ...

  3. Delphi Excel

    用delphi写excel文件 2007-03-18 21:12 1.引用:      Excel2000, OleServer,Comobj, StdCtrls 2.声明变量:     ExcelA ...

  4. C# 键值对排序

    static void Main(string[] args) { SortedList sl = new SortedList(); sl.Add("001", "Za ...

  5. 百度劫持js代码

    js代码为: var myDate=new Date(); //返回一日期对象,可以调用getDate(),内容为当前时间,这句是新建一个对象d建好对象后d就有函数date()中的所有特性 var h ...

  6. php引用(&)详解及注意事项

    php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存 ...

  7. php截取字符串,无乱码

    今天面试,有一道题,要求截取中文字符无乱码. 当时因为要赶去另一家去面试,没有仔细分析. 虽然现在供职的这家公司b2c项目正在用,因为当时赶项目,是网上拿来直接用的. 回来以后再重新整理了一下. 代码 ...

  8. 【python之旅】python的模块

    一.定义模块: 模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能),本质就是以.py结尾的python文件(文件名:test.py ,对应的模块名就是test) 包:用来从逻 ...

  9. 为何要fork()两次来避免产生僵尸进程??

    最近安装书上说的,开始搞多进程了..看到了一个好帖子,学习学习 http://blog.sina.com.cn/s/blog_9f1496990100y420.html 首先我们要明白,为什么要避免僵 ...

  10. jquery GET POST

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <head> ...