http://www.yobo.com/
.NET web service(soap)如何身份验证?
Introduction
I recently put up a few web services for a client of mine, which returned some sensitive data. I needed to find a simple way to authenticate the users of these web services. This is the approach I took.
Background
I’ve started using web services fairly often in the applications that I’ve been developing, in most cases the information they pass is suitable for the public domain. However a recent project forced me to look into different authentication methods.
My requirements were that, it had to be simple for the client applications to authenticate, also that the web based administration system had to be used. This prevented me from using the Windows authentication (which is fairly easy to use for the clients of this web service.) By using SOAP headers to pass username and password information, it greatly simplifies any authentication request.
Using the code
I wanted to make it really easy for the client to understand:
protected System.Web.UI.WebControls.DataGrid dgData;
private void Page_Load(object sender, System.EventArgs e)
{
//simple client
AuthWebService.WebService webService = new AuthWebService.WebService();
AuthWebService.AuthHeader authentication = new
AuthWebService.AuthHeader();
authentication.Username = "test";
authentication.Password = "test";
webService.AuthHeaderValue = authentication;
//Bind the results - do something here
DataSet dsData = webService.SensitiveData();
dgData.DataSource = dsData;
dgData.DataBind();
}
Basically all the client needs to do is create an authentication object, fill out the username and password, then pass them to the web service object. The web service code is also pretty simple, the .NET framework lets you create custom SOAP headers by deriving from the SoapHeader
class, so we wanted to add a username and password:
using System.Web.Services.Protocols;
public class AuthHeader : SoapHeader
{
public string Username;
public string Password;
}
The next step is to identify the web services that need the authentication, in the example I’ve included it’s the method SensitiveData
. To force the use of our new SOAP header we need to add the following attribute to our method:
[SoapHeader ("Authentication", Required=true)]
So our full definition for our web service method is:

public AuthHeader Authentication;
[SoapHeader ("Authentication", Required=true)]
[WebMethod (Description="Returns some sample data")]
public DataSet SensitiveData()
{
DataSet data = new DataSet();
//Do our authentication
//this can be via a database or whatever
if(Authentication.Username == "test" &&
Authentication.Password == "test")
{
//they are allowed access to our sensitive data
//just create some dummy data
DataTable dtTable1 = new DataTable();
DataColumn drCol1 = new DataColumn("Data",
System.Type.GetType("System.String"));
dtTable1.Columns.Add(drCol1);
DataRow drRow = dtTable1.NewRow();
drRow["Data"] = "Sensitive Data";
dtTable1.Rows.Add(drRow);
dtTable1.AcceptChanges();
data.Tables.Add(dtTable1);
}else{
data = null;
}
return data;
}
I should also mention that when I say SOAP headers, I actually mean the soap:Header
element in a SOAP request, it has nothing to do with the HTTP headers sent with the request. The SOAP request looks something like:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AUTHHEADER xmlns="http://tempuri.org/">
<USERNAME>string</USERNAME>
<PASSWORD>string</PASSWORD>
</AUTHHEADER>
</soap:Header>
<soap:Body>
<SENSITIVEDATA xmlns="http://tempuri.org/" />
</soap:Body>
</soap:Envelope>
I’ve included both the client and the web service in the attachment.
History
- 25/06/2003 – Article created
From:
http://www.codeproject.com/cs/webservices/authforwebservices.asp
WPF中的数据模板(DataTemplate)
在WPF中我们可以为自己的数据定制显示方式,也就是说虽然某数据数据是一定的,但我们可以做到让它的表现方式多种多样,比如一个时间,在以前我们一般使 用一个字符串(比如“12:03”)来显示,但我们为什么就不能显示一个小时钟呢,其实这更合乎情理,利用WPF中的数据模板技术随意并轻松地表现你的数 据.
数据模板适用于Content Control类控件与Items Control类控件.我们假设有如下一个类










































这个类很简单地表示了一个人,他的姓名和他的照片(路径)
如果在我们的软件中有一个列表控件ListBox来显示一个由多个人组成的列表,在.net 3.0以前我们可能就只能用文本来列出人的姓名而已,或者花不少的精力来重写列表控件以便在列表中在显示人名的同时显示照片.
参考以下代码:

我们定义了一个ListBox,并将其ItemTemplate制定为我们自定义的MyTemplate,也就是说列表项将按照MyTemplate制定的方式来显示列表内容。
这样我们就可以发挥我们的想像力来自定义MyTemplate
为了能在XAML中使用我们的People类,我们需要将其名字空间引入,参考以下代码:

其中Demo是我们的People类所在的名字空间,以后可以使用demo来表示这个名字空间了.
下面的代码来定义我们的MyTemplate模板,以便告诉我们的列表如何来显示他的项目:













我们将模板定义为窗口的资源,资源保存在一个资源字典中的,x:Key="MyTemplate" 表示其在资源字典中的键,DataType="{x:Type demo:People}"表 示该数据模板针对的数据类型是demo名字空间下的People类,接下来在Gird中我们定义了该数据模板的视觉树,这也是我们的工作重心,即该视觉树 定义了如何显示我们的数据。我们使用了一个Image控件并将其Source绑定到People的Photo属性上,这样以便在该Imag控件上显示照 片,然后在Image的右边我们使用一个TextBlock控件来显示人名(将People的Name属性绑定到TextBlock的Text属性上)。
注意到这个数据模板实际上在干什么:它定义了People类型对象的表现方式,在这里是显示People的照片并在照片的右方显示姓名。
以后我们需要People对象按这种方式展示给用户的时候,我们只要将该数据模板指定给要显示People对象的那个控件就可以了。
比如

就告诉我们的列表控件按照MyTemplate定义的方式来显示其项目。
呵呵,这样是不是比以前Code方式来打造一个个性列表控件来得更方便。
本周ASP.NET英文技术文章推荐[04/15 – 04/21]
- 在ASP.NET 2.0中处理数据
- UpdateControls 1.1:修复缺陷、新控件UpdateAction
- 在Enterprise Library 3 Validation中使用本地化资源
- 富客户端平台的比较
- DotNetNuke 4.5 一瞥
- 一些简单的、你可能已经知道或者不知道的ASP.NET 2.0技巧
- SequenceViz 0.3:命名空间和饼图
- Community Server 2007发布
- 超越HTML:富Internet应用程序
[1] Working with Data in ASP.NET 2.0 (在ASP.NET 2.0中处理数据)
突然发现Scott非常善于“总结”,他的很多Blog文章都是总结一下别人的文章,提纲挈领一般给出一个索引。不过这样的索引也非常有用,既传播 了知识,有能够默默地体现出一种“高高在上”的感觉,让别人对自己“刮目相看”。想想中文社区中也有不少类似的文章,可是善于“总结”的人呢?
废话说到这里,文如其名,这篇文章“总结”了一大批有关ASP.NET 2.0中处理数据的文章。其中大力推荐了Scott Mitchell的 系列文章(看来名字一样就是好,推荐的时候都会“照顾”一下,不如我也改名叫Scott Chen算了……),还有SubSonic 2.0这个比较有意思的DAL生成工具(没用过,不知道实际如何,等会尝试一下)。Scott还提到了NHibernate这个东西,让人颇感意外,至于 为什么“颇感意外”,各位仁者见仁吧……
[2] UpdateControls 1.1: Bug Fixes and UpdateAction (UpdateControls 1.1:修复缺陷、新控件UpdateAction )
UpdateControls是ASP.NET AJAX架构师Nikhil Kothari在业余时间做出来的小玩意(同样著名的还有号称“用C#写JavaScript”的Script #),其中包含的控件均能够与ASP.NET AJAX中的UpdatePanel配合,提供某项独到的功能。
最新添加的UpdateAction 控件能够在UpdatePanel执行异步更新时在服务器端设置UpdatePanel的一些更新后的行为,比如显示一条信息、设置输入焦点、将页面滚动到UpdatePanel的位置等等。看看这段代码吧:
private void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) {
if (DropDownList1.SelectedIndex == 2) {
updateAction.ShowMessage("You selected the magic item");
updateAction.SetFocus(someControl);
updateAction.ScrollTo(someControl, ScrollOffset.Bottom);
}
}
[3] Using Localized Resources with Enterprise Library 3 Validation (在Enterprise Library 3 Validation中使用本地化资源)
Brian Mains的这篇文章介绍了一些Enterprise Library 3 的新特性,特别是在Enterprise Library 3 Validation中使用本地化资源的方法。文章浅显易懂内容丰富,并提供了大量的示例代码。如果你有这方面的需求,那么一定不要错过。
[4] Rich Media Platform Comparison (富客户端平台的比较)
SilverLight(开发代号WPF/E)新鲜出炉,自然有人和现有产品(.NET和Flash/Flex)作一比较。啥也别说了,看看这张图吧,或许有失公允,不过……参考而已:
[5] Taking a look at DotNetNuke 4.5 (DotNetNuke 4.5 一瞥)
响当当的DotNetNuke最近发布了4.5版本,这篇文章就挑出了一些有意思的特性与大家分享。看看这两张图片吧,似乎功能非常不错哦!
[6] Simple ASP.NET 2.0 Tips and Tricks that You May (or may not) have Heard About (一些简单的、你可能已经知道或者不知道的ASP.NET 2.0技巧)
真的是一些非常有意思的ASP.NET 2.0技巧,虽然难登大雅之堂,每个技巧也就是一两行代码而已,不过若是合理使用的话,还是会在开发中帮助我们不少。包括:
- Maintain the position of the scrollbar on postbacks
- Set the default focus to a control when the page loads
- Set the default button that is triggered when the user hits the enter key
- Locate nested controls easily
- Strongly-typed access to cross-page postback controls
- Strongly-typed access to Master Pages controls
- Validation groups
- Finding control/variable names while typing code
[7] SequenceViz 0.3 :: Namespaces and Pie Chart (SequenceViz 0.3:命名空间和饼图)
SequenceViz 0.3是一个很有意思的小工具,能够帮助我们分析程序的流程。最新发布的0.3版本中,可以分析程序集中各个命名空间的大小,以及命名空间中各个类的大小,然后以饼图的形式显示出来。下面就是log4net的命名空间饼图:
[8] Community Server 2007 Released! (Community Server 2007发布)
恕我浅薄,Community Server那柔和漂亮的界面对我来说非常有吸引力——虽然网上对其设计、性能上的批评不少。最新的2007版本中,界面似乎越来越Cool了……
[9] Beyond HTML: Rich Internet Applications (超越HTML:富Internet应用程序)
趁着WPF/E得名的东风,Rick Strahl大牛又分析了一下业界的走势……大牛似乎对WPF/E情有独钟,却对Flash不那么看好(因为是MVP??)。不管怎样,这篇文章还是有理 有据的。下面的评论也都显得客客气气,就事论事,假设一下若是大牛将这样争议性的文章发布到了中文社区,恐怕全家都要被问候好几遍吧……
This posting is provided "AS IS" with no warranties, and confers no rights.
暴雪精英赛重磅导弹 《星际2》5月公开
“暴雪将在WWI2007上发布重磅消息,公开目前不为人知的全新游戏。”
近日,暴雪首次对外公开了这一消息。暴雪将在今年5月在韩国举行的2007暴雪全球精英赛(2007 Blizzard Worldwide Invitational.WWI)上公开新游戏。虽然暴雪的新作发布,从今年2月暴雪总裁Mike Morhaime访韩时开始便有前兆,但正式宣布却是首次。当时暴雪总裁曾说过WWI上会发布使韩国玩家震惊的消息。为了此次新游戏发布,暴雪邀请了 100多名外国记者到韩国。在2005年韩国WWI时访韩的外国记者10多名。另外,也邀请了400名韩国各媒体的记者。届时,还会有50-80名暴雪总公司的内部人员也会访问韩国。其中也包括不少世界级游戏开发大师。
对此,暴雪韩国分公司的一位关系者称,从已邀请的访韩媒体的规模和内部人士看来,新作的重要性会很高。
暴雪将发布的新游戏,可以把范围缩减到《星际争霸2》、《暗黑破坏神3》、《魔兽争霸4》、《魔兽世界》的新资料片等4款游戏上。
其中,可能性最大的莫过于《星际争霸2》。专家指出,在韩国发布最新作的理由在于,韩国是新作波及效果最大的国家。在把《星际争霸》打造成世界销售量最多的游戏过程中,韩国也做了不少贡献。在韩国举办历届最大规模的WWI,理由很可能在于新游戏是《星际争霸2》。
目前,新游戏的准确原形只有暴雪最高层知道。
MySpace中国“友你 友我”27日上线
腾讯科技讯 4月26日消息(杨剑) 今天下午MySpace中国举行了媒体圆桌会议,并宣布将于2007年4月27日凌晨正式推出MySpace中国测试版(www.myspace.cn)。罗川先生出任该公司首席执行官(CEO)。
MySpace中国同时发布了带有“友你 友我”中国印章的中文品牌标识。在解释中文品牌标识含义时,罗川表示:“带有‘友你 友我’中国印章的中文品牌标识,充分体现了网站作为社交网站的特点,同时也代表了我们不断为中国用户带来创新应用体验的决心和信心。”
在会议上,罗川强调MySpace中国是由中国企业家投资和独立管理的中国本土互联网企业,并得到了MySpace公司、IDG和中国宽带产业基金(CBC)的投资。
罗川表示:“MySpace中国公司以‘张扬个性,展示自我,与千万用户共建健康和谐的网络生活’为使命和愿景,基于MySpace全球平台,开发更适合国内网民需求的产品和功能。”
“刚刚上线的MySpace中国网络社区目前还处于测试版阶段,这个版本是根据MySpace美国的上线产品改造的,还未能够完全为中国的用户需求做出最优化定制,”罗川表示,“我们将在随后几个月的时间里根据广大用户的试用反馈进一步完善产品和服务。”
用户在测试版网络社区注册后会发现“吾空”会成为自己的好友。作为MySpace中国网络社区中的“第一个好友”,用户可以随时向“吾空”发表评论或建议,以帮助大家改进用户体验,共同建设网络家园。
据悉,第一任的“吾空”将由MySpace中国内容总监陈俊(网名:兔子JIM)担任。
罗川
罗川简介:
罗川先生目前担任 MySpace中国公司首席执行官(CEO),负责公司的整体战略和业务拓展。在此之前,他曾任微软在线服务集团中国区总经理兼上海美斯恩网络通讯技术有限公司总裁。
在微软公司的十二年多的时间里,罗川先生历任业务代表、合作伙伴项目经理、产品经理、战略合作部经理及公司副总经理等职务,并接受了多种职业化和领导能力的培训。在他担任Microsoft Office产品经理期间,取得了产品市场占有率从60%到92%快速大幅提升的良好业绩。2000年,罗川先生由公司送至微软总部,在美国华盛顿州西雅图市接受在职培训。回国后,罗川先生负责微软中国公司的战略研究和投资项目。2002年4月,罗川先生担任微软中国MSN事业部总监,负责MSN业务在中国的拓展规划。 自2004年1月起,开始担任微软公司MSN事业部大中华区总监一职,全面负责MSN在中国大陆、香港和台湾的业务。2005年4月,微软公司 和上海联和投资有限公司共同成立了合资公司—上海美斯恩网络通讯技术有限公司,罗川先生就任该公司总经理一职。2006年7月,罗川先生担任微软在线服务集团中国区总经理兼上海美斯恩网络通讯技术有限公司总裁,全面负责MSN中国门户、Windows Live Messenger、Windows Live Search、Windows Live.com等在线服务以及相关移动服务在中国的运营。
罗川先生是清华大学EMBA2002级毕业学生。他于1994年从清华大学土木工程系毕业并获得硕士学位后,加入微软(中国)有限公司。
云南省公务员考试报名时间考试安排
云南省招考公务员(报名、考试) 时间:
1、报名时间:2007年6月16日——26日在云南人事人才网(www.ynrs.gov.cn)报名。
2、考试时间:2007年8月25日——26日考试。
云南省招考公务员时间表 |
|
|
|
|
最便宜的正版卡巴斯基6 key
新春大优惠:限量发售正版卡巴斯基反病毒软件个人版一年版激活码,惊爆价40元:
购买说明: 2.价格 3.使用时间 4.售后服务 |
![]() |
购买方式
|
![]() |
常见问题 2、如何获取卡巴斯基反病毒软件个人版半年免费激活码? |
昆明至北京西K472/471次火车时刻表
472
基本信息 | 全程 | 3244 | 全程运行 | 48小时11分 | 票价信息 | 硬座 | 326 |
始发 | 昆明 | 终点 | 北京西 | 硬卧中 | 569 | ||
始发时刻 | 09:26 | 终到时刻 | 09:37 | 软座 | 517 | ||
类型 | 空调快速 | 软卧 | 904 |
车次 | 站次 | 站名 | 到达时间 | 开车时间 | 运行时间 | 里程 | |
K472 | 1 | 昆明 | 始发站 | 09:26 | 0分 | 0 | |
K472 | 2 | 曲靖 | 11:30 | 11:36 | 2小时4分 | 157 | |
K472 | 3 | 红果 | 13:21 | 13:38 | 3小时55分 | 261 | |
K472 | 4 | 六盘水 | 17:10 | 17:22 | 7小时44分 | 427 | |
K472 | 5 | 安顺 | 19:43 | 19:54 | 10小时17分 | 579 | |
K472 | 6 | 贵阳 | 21:35 | 21:57 | 12小时9分 | 676 | |
K472 | 7 | 凯里 | 次日01:15 | 01:25 | 15小时49分 | 864 | |
K472 | 8 | 玉屏 | 次日03:54 | 04:09 | 18小时28分 | 1013 | |
K472 | 9 | 怀化 | 次日05:40 | 05:50 | 20小时14分 | 1133 | |
K472 | 10 | 娄底 | 次日09:49 | 10:01 | 24小时23分 | 1448 | |
K472 | 11 | 益阳 | 次日11:31 | 11:49 | 26小时5分 | 1560 | |
K472 | 12 | 长沙 | 次日13:09 | 13:21 | 27小时43分 | 1657 | |
K472 | 13 | 岳阳 | 次日14:45 | 14:48 | 29小时19分 | 1804 | |
K472 | 14 | 武昌 | 次日17:00 | 17:14 | 31小时34分 | 2019 | |
K472 | 15 | 汉口 | 次日17:33 | 17:36 | 32小时7分 | 2039 | |
K472 | 16 | 信阳 | 次日19:57 | 19:59 | 34小时31分 | 2253 | |
K472 | 17 | 漯河 | 次日21:58 | 22:00 | 36小时32分 | 2415 | |
K472 | 18 | 郑州 | 次日23:48 | 23:52 | 38小时22分 | 2555 | |
K472 | 19 | 新乡 | 第3日01:00 | 01:22 | 39小时34分 | 2635 | |
K472 | 20 | 安阳 | 第3日03:43 | 03:45 | 42小时17分 | 2742 | |
K472 | 21 | 邯郸 | 第3日04:20 | 04:22 | 42小时54分 | 2802 | |
K472 | 22 | 石家庄 | 第3日06:05 | 06:11 | 44小时39分 | 2967 | |
K472 | 23 | 保定 | 第3日07:42 | 07:44 | 46小时16分 | 3098 | |
K472 | 24 | 北京西 | 第3日09:37 | 终点站 | 48小时11分 | 3244 |
K471/K474 北京西-昆明 (空调快速)
基本信息 | 全程 | 3244 | 全程运行 | 47小时3分 | 票价信息 | 硬座 | 326 |
始发 | 北京西 | 终点 | 昆明 | 硬卧中 | 569 | ||
始发时刻 | 13:57 | 终到时刻 | 13:00 | 软座 | 517 | ||
类型 | 空调快速 | 软卧 | 904 |
车次 | 站次 | 站名 | 到达时间 | 开车时间 | 运行时间 | 里程 | |
K471/K474 | 1 | 北京西 | 始发站 | 13:57 | 0分 | 0 | |
K471/K474 | 2 | 保定 | 15:23 | 15:25 | 1小时26分 | 146 | |
K471/K474 | 3 | 石家庄 | 17:29 | 17:34 | 3小时32分 | 277 | |
K471/K474 | 4 | 邯郸 | 19:28 | 19:40 | 5小时31分 | 442 | |
K471/K474 | 5 | 安阳 | 20:25 | 20:27 | 6小时28分 | 502 | |
K471/K474 | 6 | 新乡 | 22:16 | 22:18 | 8小时19分 | 609 | |
K471/K474 | 7 | 郑州 | 次日00:09 | 00:14 | 10小时12分 | 689 | |
K471/K474 | 8 | 漯河 | 次日01:45 | 01:47 | 11小时48分 | 829 | |
K471/K474 | 9 | 信阳 | 次日03:26 | 03:28 | 13小时29分 | 991 | |
K471/K474 | 10 | 汉口 | 次日05:42 | 05:45 | 15小时45分 | 1205 | |
K471/K474 | 11 | 武昌 | 次日06:04 | 06:12 | 16小时7分 | 1225 | |
K471/K474 | 12 | 岳阳 | 次日08:28 | 08:30 | 18小时31分 | 1440 | |
K471/K474 | 13 | 长沙 | 次日11:10 | 11:20 | 21小时13分 | 1587 | |
K471/K474 | 14 | 益阳 | 次日12:49 | 13:07 | 22小时52分 | 1684 | |
K471/K474 | 15 | 娄底 | 次日14:41 | 14:51 | 24小时44分 | 1796 | |
K471/K474 | 16 | 怀化 | 次日18:48 | 19:03 | 28小时51分 | 2111 | |
K471/K474 | 17 | 玉屏 | 次日20:36 | 20:42 | 30小时39分 | 2231 | |
K471/K474 | 18 | 凯里 | 次日22:41 | 22:47 | 32小时44分 | 2380 | |
K471/K474 | 19 | 贵阳 | 第3日01:21 | 01:34 | 35小时24分 | 2568 | |
K471/K474 | 20 | 安顺 | 第3日03:08 | 03:13 | 37小时11分 | 2665 | |
K471/K474 | 21 | 六盘水 | 第3日05:31 | 05:48 | 39小时34分 | 2817 | |
K471/K474 | 22 | 红果 | 第3日08:41 | 09:00 | 42小时44分 | 2983 | |
K471/K474 | 23 | 曲靖 | 第3日10:45 | 10:50 | 44小时48分 | 3087 | |
K471/K474 | 24 | 昆明 | 第3日13:00 | 终点站 | 47小时3分 | 3244 |
XBAP成功调用WebService
一直就发愁阿。这XBAP咋就这么垃圾呢,只能工作在 Internet Zone下面,要实现很多功能只能借助权限提升,可是权限提升只有Vista才支持。。 这么说XBAP无法访问数据库,无法读取文件,只能放放动画做做demo了。
有一天突然在网上发现 Internet权限可以调用 ASMX WebService!!看来理论上可行了。真希望微软早点开发下一版本。。
可是做实验仍然不成功,还要放在 Local intranet Zone下面才能成功。异常不爽,难道被ms骗了,不可能阿,不过代码感觉没问题啊,很失望啊。这时候发现网上有个demo成功掉用了web Service,这坚定了我的信心,下载他的代码来看。失望了,愕然发现他的功能竟然是 Local Intranet Zone,更不明白了。。
我试着重启电脑等方法,还是不行,快10点了。有点饿了,就出去买点吃的,路上就开始捉摸出问题了,很可能是我地址写错了,localhost 和 127.0.0.1虽然都代表本地,可是权限不同! 我一开始就是用http://localhost:10002/webser/service.asmx,很可能.net 自动当成了一个intranet,当我改成http://127.0.0.1:10002/webser/service.asmx的时候,奇迹出现了。。居然调用成功了。不可思议啊!
不过这样也有个前提:就是调用的web service要和程序在同一个域下,子域也不行,但可以在不同目录下。
要是支持WCF改多好啊。。
明天还得试验下看都能传输什么数据,千万别就能传字符串。。。