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值 ...
随机推荐
- python中的特殊成员
python中的特殊成员: 小甲鱼论坛总结
- myeclipse部署项目的时候报No projects are available for deployment to this server但是项目明明存在
如题,今天在尝试部署从SVN上down下来的项目时,发现不能被tomcat识别成web项目!原因是SVN上down下来的项目的结构并非典型的web项目. 解决办法,右键项目->properti ...
- linux普通用户使用1024以下的端口(80)
linux对于非root权限用户不能使用1024以下的端口,对于一些服务,过高的权限,会带来一定的风险.那么对于低权限的用户如何对外开放1024以下的端口.我这里找到几种办法并且亲测可行 首先搭建环境 ...
- 2018.11.24 loj#111. 后缀排序(后缀数组)
传送门 后缀排序模板题. 终于会后缀数组了(然而只会倍增并不会DC3DC3DC3). 在这里列举几个数组的意思: sai:sa_i:sai:当前排名第iii的后缀的起始下标. rkirk_irki ...
- 菜品识别 SDK调用
from aip import AipImageClassify import os """ 填入参数 """ APP_ID = 'your ...
- IntelliJ IDEA 2017版 spring-boot搭建拦截器
1.建立一个springboot-web项目 https://www.cnblogs.com/liuyangfirst/p/8298588.html 2.加入过滤接口 public class Log ...
- HDU 1404 Digital Deletions (暴力博弈)
题意:给定一个数字串,最长是6,然后有两种操作. 第一种是,把该串中的一个数字换成一个比该数字小的数,比如 5 可以换成 0,1,2,3,4. e.g. 12345 --> 12341 第二 ...
- html的那些小小细节
1.get post方式提交的不同 get:数据放在url的后面,用?连接 会在客户端保留缓存信息,不安全 ...
- 知识点:CSS代码语法
css 样式由选择符和声明组成,而声明又由属性和值组成,如下图所示: 选择符:又称选择器,指明网页中要应用样式规则的元素,如本例中是网页中所有的段(p)的文字将变成蓝色,而其他的元素(如ol)不会受到 ...
- C#-ado.net学习笔记-会有更新
ado.net 通用类对象.在本地内存暂存数据 托管类对象.让本地通用类对象连接数据库,让本地通用类对象和数据库同步 连接数据库 new connection(connectstring) comma ...