asp.net 2.0中傻瓜式使用soap header

在websevrice 中,soap header是十分重要的哦,主要是安全性的考虑,在asp.net 2.0中,可以简单地应用soap header来
进行傻瓜式的应用,更复杂的应用当然要更深入地去看了,

首先,我们写个简单的helloworld的webservice

using System;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Service : System.Web.Services.WebService

{

public ValidationSoapHeader Authentication;

private const string DEV_TOKEN = "12345";

public Service()

{

//Uncomment the following line if using designed components

//InitializeComponent();

}

[SoapHeader("Authentication")]

[WebMethod]

public string HelloWorld()

{

if (Authentication != null && Authentication.DevToken == DEV_TOKEN)

{

return "Hello World";

}

else

{

throw new Exception("Authentication Failed");

}

}

}

可以看到,首先必须在[webmethod]前添加[SoapHeader("Authentication")],这里我们判断来自客户端的soap header是否有效,并且看其tokern是否等于我们预先定义好的token,如果是的话就输出hello world,否则抛出异常
这里我们编写一个ValidationSoapHeader类,其中是继承了soap header,如下

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Web.Services.Protocols;

/// <summary>

/// Summary description for ePhoneCredentials

/// </summary>

public class ValidationSoapHeader : SoapHeader

{

private string _devToken;

public ValidationSoapHeader()

{
    }

public ValidationSoapHeader(string devToken)

{

this._devToken = devToken;

}

public string DevToken

{

get { return this._devToken; }

set { this._devToken = value; }

}

}
这里只不过是一些属性的设置读取,然后编写一个客户端,如下,显式指定要传递soap header

//ConsoleMyCsharpClient是建立客户端的工程名
localhost.ValidationSoapHeader header = new ConsoleMyCsharpClient.localhost.ValidationSoapHeader();

header.DevToken = "12345";

localhost.Service ws = new ConsoleMyCsharpClient.localhost.Service();

ws.ValidationSoapHeaderValue = header;

Console.WriteLine(ws.HelloWorld());
Console.ReadLine();

这样,当客户端传递12345给WS后,能正确显示HELLO WORLD,否则不能正确显示

时间: 2025-01-24 19:31:27

asp.net 2.0中傻瓜式使用soap header的相关文章

Asp.Net MVC3.0中防止跨站的POST

在Form中添加 @Html.AntiForgeryToken(); 在后台的Action中增加 [ValidateAntiForgeryToken] 这个方法还可以添加自定义的参数 @Html.AntiForgeryToken("SaltValue"); 后台的Action中,必需指名Token的值才允许正常提交. [ValidateAntiForgeryToken Salt=("SaltValue")] Asp.Net MVC3.0中防止跨站的POST,布布扣,

在asp.net 2.0中使用SqlBulkCopy类迁移数据

在asp.net 2.0中使用SqlBulkCopy类迁移数据 (转) http://jackyrong.cnblogs.com/archive/2005/08/29/225521.html 我们经常要在一个表中将数据迁移到另一个表,当然,用的方法十分多了.在.net 2.0中,提供了一个sqlbulkcopy类,也可以实现如下的操作,下面简单介绍下.比如一个表如下CREATE TABLE Person3( PersonID int IDENTITY(1,1) PRIMARY KEY, Name

使用asp.net 2.0中的SqlBulkCopy类批量复制数据

介绍:在软件开发中,把数据从一个地方复制到另一个地方是一个普遍的应用. 在很多不同的场合都会执行这个操作,包括旧系统到新系统的移植,从不同的数据库备份数据和收集数据. ASP.NET 2.0有一个SqlBulkCopy类,它可以帮助你从不同的数据源复制数据到SQL SERVER数据库. 本文中我将示范SqlBulkCopy类的不同应用. 数据库设计: 这个数据库的设计还是蛮简单的,它基于Northwind数据库的Products表.另外我还在Northwind数据库中创建了3个表. 详情可以看一

asp.net core1.x/asp.net core2.0中如何加载多个配置文件

写这篇文章,来简单的谈一下,asp.net core中,如何加载多配置文件,如有错误请斧正. 在1.x的时候,我们是自己配置 WebHostBuilder而在2.0的时候,ef core团队,将配置写到了一个CreateDefaultBuilder,这是一个预配置,人家为了方便做的. 原文地址:https://www.cnblogs.com/gdsblog/p/8503115.html

[转]ASP.NET 2.0中GridView无限层复杂表头的实现

本文转自:http://blog.csdn.net/net_lover/article/details/1306211 实现方法就是给单元格填充我们想要的格式代码. C# <%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w

ASP.NET Core3.0 中的运行时编译

运行时编译 通过 Razor 文件的运行时编译补充生成时编译. 当 .cshtml 文件的内容发生更改时,ASP.NET Core MVC 将重新编译 Razor 文件 . 通过 Razor 文件的运行时编译补充生成时编译. RazorViewEngineOptions AllowRecompilingViewsOnFileChange 获取或设置一个值,该值确定当磁盘上的文件发生更改时是否重新编译和更新 Razor 文件(Razor 视图和 Razor Pages). 对于以下项,默认值为 t

在Asp.net 4.0 中动态注册HttpModule

using System; using System.Web; using Microsoft.Web.Infrastructure; namespace MvcApplication1 { public class CustomModule : IHttpModule { public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } vo

ASP.NET Web API中把分页信息放Header中返回给前端

谈到ASP.NET Web API的分页,考虑的因素包括: 1.上一页和下一页的uri2.总数和总页数3.当前页和页容量 接着是服务端的数据以怎样的形式返回? 我们通常这样写: {    totalCount:10,    result: [        {id:1, name:"a"},        {id:2, name:"b"}    ]} 以上,把分页相关和实体信息以json格式返回给前端.但在本篇,尝试另外一种方式:把分页信息放在Header中返回给前

ASP.Net4.0中新增23项功能

这篇文章介绍Visual Studio 2010 (ASP.Net 4.0)的新功能. 1.代码片段(Code Snippets): 代码段是预先开发的代码模板,可以节省我们对有关语法思考的时间.在VS 2005和VS 2008中,已经有建立了很多代码段.不过,这些只适用于隐藏代码(code behind).在VS 2010中代码片段支持JScript,HTML以及asp.net标记.在下面画面,展示了JScript和HTML片段的快捷菜单. 在JS中: 在Html中 : 2.New Profi