Web Services Enhancements 2.0 for Microsoft
.NET (WSE)是一个用来建设Web服务的.NET类库,它支持最新的Web服务协议,包括WS-Security、WS-SecureConversation、WS-Trust、WS-Policy、WS-SecurityPolicy、WS-Addressing和
WS-Attachments。
WSE可使开发人员跨安全平台建设可升级的、安全的Web服务。它支持用传输的方式发送SOAP消息,而不是HTTP。另一个特点是具有建立SOAP路由器的功能,SOAP消息被发送给SOAP路由器,路由器再将工作交付给托管该服务的Web服务器。
本文要探讨它的另一个特点,那就是对直接互联网消息封装(DIME)的支持。DIME标准对发送二进制附件非常重要,它规定了以二进制发送附件的方法。如果是以十进制或者base64编码方式,则附件大小会增加30%。本文中,我将用一段C#代码将一个简单的DIME附件连接到SOAP消息上。
如果你还未安装WSE 2.0,请到微软的官方网站下载(请确定你符合WSE 2.0网页上的相关要求)。完成安装后,你就可以开始创建自己的DIME服务了。
首先在Microsoft Visual
Studio .NET (VS.NET)中创建一个ASP.NET Web服务工程。在你的工程中增加一个reference到Microsoft.Web.Services2类库。然后,在<system.web>元素中将以下元素添加到Web.config文件中:
<webServices> <soapExtensionTypes> <add
type="Microsoft.Web.Services2.WebServicesExtension, Microsoft.Web.Services2,Version=2.0.0.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" priority="1" group="0"
/> </soapExtensionTypes> </webServices>
另一个方法是在工程视窗中右键点击该工程,并选择WSE Settings 2.0,在General选项卡中选中两个检查框;这就可以添加合适的config设置。
最后,构造方法将DIME附件连接到SOAP消息。我要增加一个CreateDimeAttachment()方法。该方法接受一个输入参数,连接该文件的绝对路径是:
public void CreateDimeAttachment(string
filepath) { SoapContextctx = ResponseSoapContext.Current; DimeAttachment attach =
new DimeAttachment("image/jpeg", TypeFormat.MediaType, filepath); ctx.Attachments.Add(attach); }
Web服务响应的上下文存储在本地变量ctx中,并用image/bmp类型格式和文件路径创建一个新的DimeAttachment(我猜测文件路径可能为一个bitmap文件)。新的DimeAttachment被添加到当前响应上下文的Attachments集合中。
现在,你要做的只是将恰当的使用声明添加到.asmx文件顶部:
using Microsoft.Web.Services2.Dime; using Microsoft.Web.Services2; using System.Net;
以下为全部示例代码:
为了测试程序,你必须创建一个SOAP客户端。只是简单地使用引用Web服务的缺省页还不行。你可以编写一个新的ASP.NET Web应用程序,再将一个Web reference添加到新的Web服务中,这样便创建了一个SOAP客户端。同时还要注意以上面所示的方式添加WSE配置设置。
责任编辑:李宁
欢迎评论或投稿
|