【问题标题】:WCF REST File upload with additional parameters带有附加参数的 WCF REST 文件上传
【发布时间】:2011-08-31 23:07:53
【问题描述】:

我一直在尝试创建一个简单的 REST 文件上传 WCF 服务,它接受不止一条信息。

我在 Internet 上找到了相当多的地方,这些地方表明可以有多个参数到具有 Stream 作为参数之一的 OperationContract(Upload file with REST、Using Silverlight and WCF to create a RESTful File Upload Utility、WCF REST File Upload、 Uploading File to server from ASP.Net client using WCF REST Service 等),但无论我尝试多少次,我总是收到相同的错误消息。

对于操作中的请求上传是操作必须具有的流 类型为 Stream 的单个参数。

当其中一个参数是 Stream 时,是否真的可以有一个 OperationContract 接受多个参数?如果是这样,是否需要采取任何我可能错过的特定步骤,而这会导致我无法这样做。

作为参考,我使用的是 Visual Studio 2010,WCF 4.0

我已经上传了我想要开始工作的示例项目,它实际上是我读过的示例中的最低限度,我应该能够上传带有附加参数的文件。 My Example.

【问题讨论】:

  • 从哪里得到错误信息?尝试浏览“服务帮助页面”时? WCF 中存在一个已知错误(IIRC 至少在 4.0 之前),服务帮助页面显示存在错误,但操作正常。尝试调用您的操作,看看这是否可行。
  • 当我尝试查看服务(通过转到localhost:1752/Service1.svc)或尝试在客户端应用程序中创建服务引用时收到错误消息。
  • 不支持 REST 端点的“添加服务引用” - 所以你遇到了我谈到的那个问题。尝试将服务接口复制到客户端,然后使用WebChannelFactory<T> 类来使用服务。或者你可以使用WebClient,这通常很简单。

标签: c# .net wcf


【解决方案1】:

是的,这是可能的。我正在使用 UriTemplates 来做这件事。

[WebGet(UriTemplate="ReceiveChunk/{complete}?offset={offset}", Method ="POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
public string ReceiveChunk(string complete, int offset, Stream fileContents)
{
//implementation
}

这就是你要找的吗?

【讨论】:

  • 但是你仍然会得到类似的异常: InvalidOperationException: For request in operation A to be a stream the operation must have a single parameter.
【解决方案2】:

我知道这是一个老问题,但我今天一直在努力解决这个问题。终于找到this link,具体是:

2。您没有使用 WebEndpoint 或 WebServiceHost;

我在控制台应用程序中自行托管我的服务,并且使用的是 ServiceHost 而不是 WebServiceHost。更改主机类型解决了我的问题并解释了我的困惑。 SOAP WCF 服务要求操作只有一个 Stream 参数,REST WCF 服务不需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 1970-01-01
    相关资源
    最近更新 更多