.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:

Collapse
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类控件.我们假设有如下一个类

using System;

namespace Demo
{
    
public class People
    
{
        
private string name;

        
private string photo;

        
public People(string name, string photo)
        
{
            
this.name = name;
            
this.photo = photo;
        }


        
public string Name
        
{
            
get
            
{
                
return this.name;
            }

            
set
            
{
                
this.name = value;
            }

        }


        
public string Photo
        
{
            
get
            
{
                
return this.photo;
            }

            
set
            
{
                
this.photo = value;
            }

        }

    }

}

这个类很简单地表示了一个人,他的姓名和他的照片(路径)

如果在我们的软件中有一个列表控件ListBox来显示一个由多个人组成的列表,在.net 3.0以前我们可能就只能用文本来列出人的姓名而已,或者花不少的精力来重写列表控件以便在列表中在显示人名的同时显示照片.

参考以下代码:

<ListBox x:Name="ListBox_PeopleList" ItemTemplate="{StaticResource  MyTemplate}" />

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

xmlns:demo="clr-namespace:Demo" 

其中Demo是我们的People类所在的名字空间,以后可以使用demo来表示这个名字空间了.

下面的代码来定义我们的MyTemplate模板,以便告诉我们的列表如何来显示他的项目:

<Window.Resources>        
    
<!–列表模板–>
    
<DataTemplate x:Key="MyTemplate" DataType="{x:Type demo:People}">
      
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" Margin="4,4,4,4" >
        
<Grid.ColumnDefinitions>
          
<ColumnDefinition Width="Auto"/>
          
<ColumnDefinition Width="Auto"/>
        
</Grid.ColumnDefinitions>
        
<Image Source="{Binding Photo}" Width="50" Height="50" Grid.Column="0" Grid.RowSpan="1"/>
        
<TextBlock Text="{Binding Name}" Grid.Column="1" Grid.ColumnSpan="1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
      
</Grid>
    
</DataTemplate>
</Window.Resources>

我们将模板定义为窗口的资源,资源保存在一个资源字典中的,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对象的那个控件就可以了。
比如

<ListBox x:Name="ListBox_PeopleList" ItemTemplate="{StaticResource  MyTemplate}" />

就告诉我们的列表控件按照MyTemplate定义的方式来显示其项目。

呵呵,这样是不是比以前Code方式来打造一个个性列表控件来得更方便。

本周ASP.NET英文技术文章推荐[04/15 – 04/21]

  1. 在ASP.NET 2.0中处理数据
  2. UpdateControls 1.1:修复缺陷、新控件UpdateAction
  3. 在Enterprise Library 3 Validation中使用本地化资源
  4. 富客户端平台的比较
  5. DotNetNuke 4.5 一瞥
  6. 一些简单的、你可能已经知道或者不知道的ASP.NET 2.0技巧
  7. SequenceViz 0.3:命名空间和饼图
  8. Community Server 2007发布
  9. 超越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技巧,虽然难登大雅之堂,每个技巧也就是一两行代码而已,不过若是合理使用的话,还是会在开发中帮助我们不少。包括:

  1. Maintain the position of the scrollbar on postbacks
  2. Set the default focus to a control when the page loads
  3. Set the default button that is triggered when the user hits the enter key
  4. Locate nested controls easily
  5. Strongly-typed access to cross-page postback controls
  6. Strongly-typed access to Master Pages controls
  7. Validation groups
  8. 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日考试。

 云南省招考公务员时间表

 

云南省招考公务员(报名、考试) 时间:

1、报名时间:2007年6月16日——26日在云南人事人才网(www.ynrs.gov.cn)报名。

2、考试时间:2007年8月25日——26日考试。

最便宜的正版卡巴斯基6 key

新春大优惠:限量发售正版卡巴斯基反病毒软件个人版一年版激活码,惊爆价40元:

购买说明:

1.本次优惠购买正版激活码活动范围:
此优惠仅提供给360安全卫士用户,购买前需验证360安全卫士提供的卡巴斯基反病毒软件个人版免费激活码

2.价格
本正版激活码仅售40元。(市场价320元,立即节省280元,全国最低价!)

3.使用时间
该激活码将从激活之日起使用1年。
(如果您的免费激活码还未到期,建议您在免费激活码到期后再输入该激活码,即可延长使用一年)

4.售后服务
享受7×24小时免费热线服务,及全球病毒库即时更新服务。

购买方式

华军软件商城购买(40元包年)

支持全国19家银行60余种银行卡以及邮政储蓄卡、西联汇款、YeePay帐户和云网卡支付方式

          

奇虎手机购买(10元包月)

直接通过手机进行支付,是最快捷的支付方式

          

常见问题
1、如何购买卡巴斯基反病毒软件个人版正版激活码?
1.安装有360安全卫士,并且从360安全卫士处获取有卡巴斯基反病毒个人版半年免费试用激活码。
2.到卡巴斯基反病毒软件v6.0个人版正版激活码购买页面,填入您所获取的个人版半年免费激活码进行校验,并选择
您想购买的年限。
3.当半年免费激活码的验证通过后即可开始进行购买,按照购买页面的提示方式一步步进行。
4.付款成功后,您将通过您留下的方式获取卡巴斯基v6.0反病毒软件正版激活码。

2、如何获取卡巴斯基反病毒软件个人版半年免费激活码?
1.安装360安全卫士,到“查杀”-“病毒查杀”界面右下角,点击下载安装卡巴斯基v6.0反病毒个人版。
2.完成卡巴斯基v6.0反病毒个人版安装后,重启计算机,再打开360安全卫士,在“病毒查杀”界面右下角获取激活码
3.如果仍有问题,请参看360安全卫士激活码获取帮助页面http://www.360safe.com/codehelp.htm

昆明至北京西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改多好啊。。

明天还得试验下看都能传输什么数据,千万别就能传字符串。。。