Web Service 、WS-Security、Java和.net的互通(一)
和第三部分同样,这部分内容其实应该在后面才对,不过当前工作既然做了,也需要写下来分享,那么就提前插队到成长记录当中吧。看了这篇文章以后,可能给人的感觉是有点偏离服务框架的内容。的却,如果纯粹从技术方面来说,这部分应该不属于服务框架范畴。拿杭州作个例子,杭州是全国唯一
扩展的
扩展后的
?
?
?
?
?
?
?
?
?
?????? 红色部分很重要,需要选择这种协议来序列化获得key reference。
?
?
?????? 这里配置策略文件有所不同,这里首先会让你输入这个Policy所属的URI,和3不同,3中是在代码中配置进去的,在配置中只是申明,而没有对应配置到具体的哪一个请求,这边可以填入某一个URI,那么你对那个URI的WebService做任何请求的时候都会采取该策略,同时如果你就不填任何内容,直接用他默认的,那么所有不在指定URI对应策略中出现的URI请求和响应,都将采取这种策略,我就默认采用这种模式,因为如果不采用这种模式,相应回来的请求就找不到可以使用的策略了(这个出错信息也困扰我不少时间)。继续配置下面的内容:
?
?
?
?
??????
这里我们只需要做signature,所以只配置了签名。
?
?
?
?
这里选择证书根据前面页面中配置的存储位置相关,第一个证书是用来签名的带有私钥的证书。第二个是受信的返回的签名交验证书。
?
?
配置完成,并保存。接下去就是要做一些wse3自动作的事情,而在wse2中需要手动修改的内容。首先把project菜单的show all files去掉,然后再选上,就会发现项目中多了一个文件:policyCache.config,选中这个文件然后右键选择Include in project,不然的话每次调试都不会被拷贝到项目执行目录下面(类似于eclipse的src目录中文件在调试中会被拷贝到bin目录下),然后将这个文件的属性Copy to Output Directory设置为Copy always,这样每次修改以后都会被同步过去。然后选择项目右击add reference,加入Microsoft.Web.Services2这个类库,修改Web References下定义的服务的Reference.cs,将服务继承类修改一下,例如我的项目中的服务自动生成以后这么继承:
AccountService : System.Web.Services.Protocols.SoapHttpClientProtocol