四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

asp.net下使用DIME協(xié)議上傳文件

在某些Web Service的應(yīng)用場(chǎng)景下,例如公文的傳送,在Web Service返回結(jié)果的同時(shí)將word文檔及其它附件返回,這時(shí)候可以使用DIME協(xié)議來(lái)進(jìn)行文件的傳輸。使用它來(lái)傳輸不需要經(jīng)過(guò)SOAP消息的序列化/反序列化,有很高的效率。當(dāng)然這里要用到Web Services Enhancements (WSE) ,目前的最新版本為3.0。本文中所使用的版本為2.0sp2,有趣的是WSE的各個(gè)版本中的命令空間都有很大的變化。這一點(diǎn)的確有點(diǎn)讓人苦惱!在安裝WSE時(shí)推薦將Visual Studio Tools也安裝上,這樣會(huì)免去手工修改Web Service的Web.config文件的工作。
本文的示例下載:http://www.cnblogs.com/Files/lcybest/DIMESample.rar
Web Service:
首先要引用Microsoft.Web.Services2.dll,修改Web.config文件,將下面這段配置添加進(jìn)去:
<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>
</system.web>
如果你安裝了WSE的Visual Studio工具,以上工作可以通過(guò)工具來(lái)實(shí)現(xiàn)。
下面的代碼演示了在ResponseSoapContext中加入DIME附件的實(shí)現(xiàn):
[WebMethod]
public string GetDocument(string DocumentId)
{
if(DocumentId.Length==0)
return "DocumentId can not be empty!";
Attachment attach=new Attachment(Guid.NewGuid().ToString(),@"D:/test.doc");
Microsoft.Web.Services2.ResponseSoapContext.Current.Attachments.Add(attach);
return "SendOK";
}
我們使用一個(gè)windows應(yīng)用程序來(lái)演示一下可以接收Web Service附件的客戶(hù)端
首先要將Microsoft.Web.Services2.dll引用到項(xiàng)目中,添加對(duì)Web Service的引用。此時(shí)如果安裝了WSE工具會(huì)自己動(dòng)生成一個(gè)以“WSE”為結(jié)尾的代理類(lèi)。在代碼中可以直接使用這個(gè)代理類(lèi)。
如果沒(méi)有安裝工具則需要手工修改Visual Studio生成的代理類(lèi),代理類(lèi)默認(rèn)是從System.Web.Services.Protocols.WebClientProtocol繼承的,在這里要修改為從Microsoft.Web.Services2.WebServicesClientProtocol來(lái)繼承。
在我們客戶(hù)端中可以通過(guò)以下代碼來(lái)實(shí)現(xiàn)將Response中的文件取出來(lái)保存到文件系統(tǒng)中:
 程序代碼
private void button1_Click(object sender, System.EventArgs e)
{
TalkServer.DataInterface client=new DIMEClient.TalkServer.DataInterface();
string strvalue=client.GetDocument("test111");
if(client.ResponseSoapContext.Attachments.Count==0)
{
MessageBox.Show("No Attachments in the webservice response!");
return;
}
Microsoft.Web.Services2.Attachments.Attachment attach;
attach=client.ResponseSoapContext.Attachments[0];
byte[] buffer=new byte[attach.Stream.Length];
client.ResponseSoapContext.Attachments[0].Stream.Read(buffer,0,buffer.Length);
System.IO.FileStream stream=new System.IO.FileStream(@"C:/test.doc",System.IO.FileMode.Create);
stream.Write(buffer,0,buffer.Length);
stream.Flush();
stream.Close(); 
if(strvalue=="SendOK")
MessageBox.Show("Receive succeed");
else
MessageBox.Show("Receive fail");
}

AspNet技術(shù)asp.net下使用DIME協(xié)議上傳文件,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 以一当百| 跳墙| 我是传奇 电影| 杰奎琳·卡瓦霍| 飞刀手| 贝的故事教案设计优秀教案| 男生女生向前冲第六季2014| 拔萝卜电视剧视频高清完整版| 彭程| 文琪演过的电视剧有哪些| 接吻摸胸视频| 寡妇 电影| 韩漫画未删减男同| 母亲电影韩国完整版免费观看| 郑柔美个人简介| 红日歌词中文谐音歌词| 苍兰| 林莉娴| 性女贞德| 祈今朝电视剧免费观看影视大全| 一元二次方程计算题| 金马电影网| 伊藤爱子| 将夜2第二季免费观看| 黄色网址视频| 蜗居爱情| 第一财经今日股市直播间在线直播| stylistic device| 李坤忆| 辕门外三声炮歌词| 《千年僵尸王》电影| 艳窟神探| 从亘古到永远| 小镇追凶电影在线观看| 诊所惊魂| 故乡之恋简谱| 果宝特攻5 2030| 乱世危情电视剧演员表| 丁丁历险记电影| 孙炜| 保镖电影在线完整观看|