Workflow WCF服务调用异常:应用端出现未识别的参数要求
解决Workflow WCF服务引用参数不匹配的问题
我之前也碰到过类似的情况,当用Workflow创建WCF服务后,调用方添加服务引用却出现参数不匹配的问题,大概率是元数据解析异常或者服务引用添加方式不对导致的,咱们一步步来排查解决:
1. 先确认服务端的元数据是否正确发布
Workflow WCF服务的元数据是生成正确服务代理的关键,首先检查服务的配置文件(web.config/app.config):
- 找到
<system.serviceModel>节点下的<behaviors>-><serviceBehaviors>,确保包含:<behavior> <serviceMetadata httpGetEnabled="true"/> </behavior> - 同时确认服务有元数据交换(mex)终结点:
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> - 启动服务后,在浏览器访问
http://localhost:你的服务端口/你的服务文件.xamlx?wsdl,如果能正常显示WSDL内容,说明元数据没问题;如果打不开,先修复元数据配置再继续。
2. 用服务的HTTP地址重新添加服务引用
你之前直接粘贴本地.xamlx文件路径添加引用的方式很可能是问题根源——VS直接读取本地文件无法正确解析服务的元数据结构,导致生成的代理参数错乱。正确的做法是:
- 确保你的Workflow WCF服务正在运行(比如按F5启动服务项目)
- 在调用方的Workflow项目里,右键「服务引用」→「添加服务引用」
- 在地址栏输入服务的完整HTTP地址(比如
http://localhost:1234/MyWorkflowService.xamlx),点击「转到」 - 等待VS加载服务的元数据,选择对应的服务操作后,生成新的服务引用
3. 清理重建,避免缓存问题
有时候旧的缓存文件会干扰新的服务引用生成,按下面的步骤操作:
- 先删除调用方项目里现有的服务引用文件夹
- 点击VS菜单「生成」→「清理解决方案」
- 重新生成服务端项目,确保服务正常运行
- 再重新添加服务引用,最后生成调用方项目
4. 检查服务端接收活动的参数配置
回到你的Workflow服务端,确认接收活动的配置:
- 打开接收活动的「内容」设置,检查参数是否正确绑定到
zipcode,操作名称_GetCityStateFromZip有没有拼写错误 - 确保接收活动的「操作名称」和你在调用方看到的名称一致,避免因名称不匹配导致的参数识别错误
按照这些步骤操作后,应该就能解决参数不匹配的问题,让调用方的服务组件正确识别zipcode参数,而不是莫名其妙的InArgument。
内容的提问来源于stack exchange,提问作者sickcactus
相关产品推荐
相关产品推荐

