问题标签 [wcf-streaming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
76 浏览

c# - WCF Webservice 使用 Stream 传递 messagecontract 并将字符串返回给客户端

我想创建 WCF Web 服务来重新计算 .xlsx 和 .xls 文件的公式(想确定服务中的扩展类型并将处理后的 fileID 返回给客户端,然后使用另一个服务方法从返回的 fileID 中获取文件

在此处输入图像描述

但我无法实现我的第一种方法。

我创建了我的服务如下

对象/消息合约

界面

服务方式

网络配置

期望: ReturnFile:按预期工作并得到结果 UploadFile:当我尝试运行 UploadFile 方法时,发生了以下异常。

无法加载操作“UploadFile”,因为它具有 System.ServiceModel.Channels.Message 类型的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。当使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

所以我浏览了 Stackoverflow 并找到了下面的线程 How to return value using WCF's MessageContract? , WCF - Return Object With Stream Data , MessageContract 的使用在启动时使 WCF 服务崩溃, 并发现我在发送消息合同时无法返回字符串值,但可以返回另一个 MessageContract.through Web 服务方法。

所以我改变了我的代码如下向消息合约 添加了一个新的参数(returnFileName),我需要返回给客户端:

接口和方法如下: 接口:

服务方式:

客户端应用:

但它仍然给我提供了错误并且它不允许返回对象:

无法将类型“void”隐式转换为“ConsoleAppFileAction.ServiceReferenceFile.UploadStreamMessage”

请有人告诉我我在做什么错误?