wcf读取message内容

 1 private string MessageToString(ref Message message)
 2 {
 3     WebContentFormat messageFormat = this.GetMessageContentFormat(message);
 4     MemoryStream ms = new MemoryStream();
 5     XmlDictionaryWriter writer = null;
 6     switch (messageFormat)
 7     {
 8         case WebContentFormat.Default:
 9         case WebContentFormat.Xml:
10             writer = XmlDictionaryWriter.CreateTextWriter(ms);
11             break;
12         case WebContentFormat.Json:
13             writer = JsonReaderWriterFactory.CreateJsonWriter(ms);
14             break;
15         case WebContentFormat.Raw:
16             return this.ReadRawBody(ref message);
17     }
18
19     message.WriteMessage(writer);
20     writer.Flush();
21     string messageBody = Encoding.UTF8.GetString(ms.ToArray());
22
23     ms.Position = 0;
24     // 这里需要将message重新写入
25     XmlDictionaryReader reader;
26     if (messageFormat == WebContentFormat.Json)
27     {
28         reader = JsonReaderWriterFactory.CreateJsonReader(ms, XmlDictionaryReaderQuotas.Max);
29     }
30     else
31     {
32         reader = XmlDictionaryReader.CreateTextReader(ms, XmlDictionaryReaderQuotas.Max);
33     }
34
35     Message newMessage = Message.CreateMessage(reader, int.MaxValue, message.Version);
36     newMessage.Properties.CopyProperties(message.Properties);
37     message = newMessage;
38
39     return messageBody;
40 }
41
42    private WebContentFormat GetMessageContentFormat(Message message)
43 {
44     WebContentFormat format = WebContentFormat.Default;
45     if (message.Properties.ContainsKey(WebBodyFormatMessageProperty.Name))
46     {
47         WebBodyFormatMessageProperty bodyFormat;
48         bodyFormat = (WebBodyFormatMessageProperty)message.Properties[WebBodyFormatMessageProperty.Name];
49         format = bodyFormat.Format;
50     }
51
52     return format;
53 }
54
55    private string ReadRawBody(ref Message message)
56 {
57     XmlDictionaryReader bodyReader = message.GetReaderAtBodyContents();
58     bodyReader.ReadStartElement("Binary");
59     byte[] bodyBytes = bodyReader.ReadContentAsBase64();
60     string messageBody = Encoding.UTF8.GetString(bodyBytes);
61
62     // Now to recreate the message
63     MemoryStream ms = new MemoryStream();
64     XmlDictionaryWriter writer = XmlDictionaryWriter.CreateBinaryWriter(ms);
65     writer.WriteStartElement("Binary");
66     writer.WriteBase64(bodyBytes, 0, bodyBytes.Length);
67     writer.WriteEndElement();
68     writer.Flush();
69     ms.Position = 0;
70     XmlDictionaryReader reader = XmlDictionaryReader.CreateBinaryReader(ms, XmlDictionaryReaderQuotas.Max);
71     Message newMessage = Message.CreateMessage(reader, int.MaxValue, message.Version);
72     newMessage.Properties.CopyProperties(message.Properties);
73     message = newMessage;
74
75     return messageBody;
76 }
时间: 2024-10-12 15:31:34

wcf读取message内容的相关文章

ASP.NET中读取excel内容并显示

项目中经常会用到把excel的文件内容导入到数据库中的,刚刚花了点时间,做了个例子,基本上能实现导入Excel后显示的功能吧,导入的excel文件得是xls,即是2003的.     代码思路如下:要读取的excel文件必得得是在本地硬盘,所以一般来说都是让远程用户选择自己硬盘上的Excel文件,然后把用户选择的文件上传到本地服务器上,再在本地服务器上进行操作.我把界面后置代码重要部分贴出来,大家自己慢慢看吧,都有注释了. C#代码   // 上传按钮 protected void btnUp_

Python3读取邮件内容

Python3读取邮件内容 前言 邮件的收取主要有pop(主要用于客户端远程管理服务器上的邮件)和imap(交互式邮件访问协议),相应的Python中提供了相关的模块poplib和imaplib.POP3尽管得到广泛的支持,但其已经过时,而且POP3服务器的实现差异很大,大多数进行较差,所以如果我们的邮件服务器支持IMAP,那么最好使用imaplib.IMAP4,因为IMAP服务器往往会更好的实现.基本上主流的邮箱都会支持imap协议,如qq.163.gmail.outlook等等.因此我们选择

已知s.txt文件中有一个这样的字符串 请编写程序读取数据内容,把数据排序后写入 ss.txt文件

package cn.idcast5; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.Arrays; /* * 需求:已知s.txt文件中有一个这样

web前端读取文本文件内容

html5+js实现,参照xxyy888的CSDN博客文章<使用HTML+javascrpt读取txt文本文件>失败,将作者文章中的代码重新整理了下依然不行,文章代码存在的问题是括号错误,基本上都是弄成了全角字符,整理后的代码如下, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitiona

asp.net 上传XML,txt 直接读取文件内容

if (GetUploadFileContent.PostedFile.InputStream.Length < 1) { Msg.Text = "请选择文件";return; } string FileName = GetUploadFileContent.FileName;//上传文件文件名 string FilePath = GetUploadFileContent.PostedFile.FileName;//上传文件完整路径+文件名string fileExtName =

PHP读取文件内容的五种方式

php读取文件内容的五种方式 分享下php读取文件内容的五种方法:好吧,写完后发现文件全部没有关闭.实际应用当中,请注意关闭 fclose($fp);-- php读取文件内容: -----第一种方法-----fread()-------- ? 1 2 3 4 5 6 7 8 <?php $file_path = "test.txt"; if(file_exists($file_path)){ $fp = fopen($file_path,"r"); $str

POI读取Excel内容格式化

在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其实最希望的方式是Excel是什么,那POI取出来就是什么,不要搞任何转换. 网上搜罗各种格式化方式后,找到最满意的一种: import org.apache.poi.hssf.usermodel.HSSFDataFormatter; import org.apache.poi.hssf.usermo

Asp.Net 读取Excel内容超过255个字符被截断

.csv类型的单元格不能超过255,要转成xls格式 Asp.Net 读取Excel内容超过255个字符被截断,这问题很莫名其妙的,有时候是单元格直接被截断,有时候是C#操作读取时被截断,要想好好导入,也不容易.... 当单元格复制字符串或导入时,字符串就被截断,注意新建Excel的文件保存类型,多试几个相关类型试试; C#操作读取时被截断,如果查看单元格字符串是对的,那看看是不是以下的问题: 用Ado读取数据时,对于超过255个字符的单元格,必须在前1-8列,大于255个字符的单元格第一行数据

测试打开文件并读取文件内容

无法复制xxxx: 文件正在被另一个人或程序使用,这种情况下怎么想办法用QT拷贝这个文件,或者读出文件内容 文件正在被另一个人或程序使用,这种情况下怎么想办法用Delphi拷贝这个文件,或者直接读出文件内容? procedure TForm1.Button1Click(Sender: TObject); var F: THandle; ABuffer: array [0..1024] of byte; C : integer; begin F := FileOpen('C:\Users\kk\D