wcf返回值报错解析
问题来源
最近在项目中使用wcf,因为是一个新手,对新的东西总是比较敬畏,不过一切都是进行得很顺利,运行的时候,突然报了错,编译器提示的错误大概是:“InvalidOperationException:无法加载操作“UploadResourceNotInDb”,它具有类型为 System.ServiceModel.Channels.Message 的参数或返回类型,或具有一个带有 MessageContractAttribute 及其他不同类型参数的类型。”!
服务契约(Service Contract)和消息契约(Message Contract)如下:
[ServiceContract(Name = "ResourceFile")]
public interface ISysResourceSyncService : IBaseService
{ /// <summary>
/// 同步到服务器端,不会记录到数据库,仅仅是同步文件到服务器端
/// </summary>
/// <param name="ResourceFile"></param> [OperationContract]
void UploadResourceNotInDb(ResourceFile ResourceFile);
} [MessageContract]
public class ResourceFile
{
[MessageBodyMember]
public Stream ResourceBody { get; set; } [MessageHeader]
public string ResourceName { get; set; } [MessageHeader]
public string ResourcePath { get; set; } [MessageHeader]
public string ReflectEntity { get; set; } [MessageHeader]
public string FieldName { get; set; } [MessageHeader]
public int EntityId { get; set; }
}
问题查找
给经过查找不同的资料,发现在http://msdn.microsoft.com/zh-cn/library/ms730255.aspx,找到了问题解决办法。
英文解析:
A messaging-style operation has at most one parameter and one return
value where both types are message types; that is, they serialize
directly into a specified SOAP message structure. This may be any type
marked with the MessageContractAttribute or the Message type.
中文解析:
即:如果一个服务契约(Service Contract)的某个服务操作(operation)是基于消息类型(messaging-style)的,则这个服务操作(operation)必须:
最多有一个输入参数
最多有一个返回类型
输入参数和返回类型必须是消息类型(message type,如消息契约或者Message类型的参数)的。当然可以不返回,为void。
意思都很明白了,那就着手修改一下!
解决办法
把返回bool改回void或者消息类型,即可!完美运行!
扩展知识
另外,在定义应用于流(stream)传输的消息契约(Message Contract)时:
一、SOAP主体(即,[MessageBodyMember]应用的属性)只能有一个,即 public System.IO.Stream FileData { get; set; }
二、SOAP报头(即,[MessageHeader]应用的属性)可以有多个,传输文件名,大小,时间等。
为了提高性能,可以将多个报头合成一个报头,那就必须利用数据契约(Data Contract)来合成多个数据。
wcf返回值报错解析的更多相关文章
- C编译器中“不是所有的控件路径都返回值”报错
编译器的判断逻辑是是否在所有的分支中都返回了值,即if不成立时也必须返回值.编译器认为如果三个if都不成立则此函数可能没有返回值,故报错.需要将第三个if改为else或者去掉if体直接return.
- spring boot 开发 ajax返回值报错
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "succeed", templ ...
- 使用wkwebview时,push后,再pop返回,报错
使用wkwebview时,push后,再pop返回,报错 Cannot form weak reference to instance (xxxx) of class xxxx. It is poss ...
- java -- SSM配置完成后,能访问jsp文件不能访问html文件,报错解析
SSM配置完成后,能访问jsp文件不能访问html文件,报错解析 在确保路径没有任何问题的,情况下,相同的页面,jsp能够正常访问,html却不能正常访问(404). 解决方法: 在web.xml中添 ...
- C# ODP.NET 调用Oracle函数返回值时报错的一个解决方案
有人在社区问到:C#调用Oracle中自定义函数的返回值时,无法正常调用.但在PL/SQL中正常调用返回. 于是动手一试: 1.准备函数(Oralce 11g.2.0.0.4) CREATE OR R ...
- spring使用jackson返回object报错:Handler execution resulted in exception: Could not find acceptable representation
问题:在springmvc中添加Jackson jar包返回Object类型,处理器方法的produces属性不写,默认根据类型,但如果指定了(错误原因)produces = "text/h ...
- redis取值报错
> get "all_couriers_on_the_job" (error) ERR Operation against a key holding the wrong k ...
- mybatis mapper.xml 写关联查询 运用 resultmap 结果集中 用 association 关联其他表 并且 用 association 的 select 查询值 报错 java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for mybatis.map
用mybaits 写一个关联查询 查询商品表关联商品规格表,并查询规格表中的数量.价格等,为了sql重用性,利用 association 节点 查询 结果并赋值报错 商品表的mapper文件为Gooo ...
- MySQL数据库储存bit类型的值报错
当我们储存bit类型的值时,不能直接写入数字 上图中的画圈部分就是bit类型,若是直接填入"1"或"0"等等就会报错,如下: 这时候,我们要看bit(M)的M值 ...
随机推荐
- kbmmw 中虚拟文件操作入门
kbmmw 中一直有一个功能,但是基本上都没有提过,但是在实际应用中,却非常有用,这个功能就是 虚拟文件包功能,他可以把一大堆文件保存到一个文件里面,方便后台管理. kbmmw 的虚拟文件在单元kbm ...
- 2019.01.22 poj2926 Requirements(状态压缩)
传送门 题意:给一堆五维的点,求最远点对. 思路:跟CF1093G差不多 考虑把正负号状压成一个323232以内的数,然后对于每一类分别求最大最小值再做差更新答案即可. 代码: #include< ...
- Latex表格插入
\begin{table}[h] \centering \caption{Traffic flows description} \begin{tabular}{|c||c|c|c|c|} \hline ...
- ssh scp 加端口
scp -P one-infrastructure-api.tar.gz console@172.31.16.2:/root/ ssh -p console@172.31.16.2
- s4-2 ALOHA 协议
多路访问协议 随机访问协议(Random Access) 特点:站点争用信道,可能出现站点之间的冲突 典型的随机访问协议 • ALOHA协议 • CSMA协议 • CSMA/CD协议(以太网采 ...
- vue中的路由嵌套
1定义组件 const Index = { template:` <div>首页</div> ` } const Order = { template:` <div> ...
- SQL编写-谁和谁是好朋友
problem: 用户表 姓名 张三 李四 王五 好友表 姓名 好友姓名 张三 李四 张三 王五 李四 张三 用户表里面姓名必须在好友表里面互加为好友,请问如何找出还没有加为好友的姓名 ...
- 标记化结构初始化语法 在结构体成员前加上小数点 如 “.open .write .close ”C99编译器 .
今天在看串口驱动(四)的时候 有这样一个结构体初始化 我很不理解 如下: static struct s3c24xx_uart_port s3c24xx_serial_ports[NR_PORTS] ...
- .net正则表达式实例
正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串.正则表达式无疑是处理文本最有力的工具,而.NET的System.dll类库提供的System.Text.RegularExpression ...
- nutch相关目录说明
Nutch数据包含3个目录结构,分别是: 1.Crawldb:用于存储Nutch将要检索的url信息,以及检索状态(是否检索.何时检索) 2.Linkdb:用于存储每一个url所包含的超链接信息(包括 ...