C# 带附加参数的WCF REST文件上载

C# 带附加参数的WCF REST文件上载,c#,.net,wcf,C#,.net,Wcf,我一直在尝试创建一个简单的REST文件上传WCF服务,它接受不止一条信息,但没有成功 我在互联网上找到了一些地方,它们表明一个OperationContract可能有多个参数,其中一个参数是流(,,等),但无论我尝试了多少次,都会收到相同的错误消息 要将操作中的请求上载为流,该操作必须具有 类型为Stream的单个参数 当其中一个参数是流时,实际上是否可能有一个接受多个参数的OperationContract?如果是这样的话,是否需要采取任何我可能错过的特定步骤,而这些步骤可能会导致我无法这样做

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

我在互联网上找到了一些地方,它们表明一个OperationContract可能有多个参数,其中一个参数是流(,,等),但无论我尝试了多少次,都会收到相同的错误消息

要将操作中的请求上载为流,该操作必须具有 类型为Stream的单个参数

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

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


我已经上传了我正试图开始工作的示例项目,这是我读到的示例中我应该能够上传带有附加参数的文件的最小值

是的,这是可能的。我正在用模板做这件事

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

这就是你想要的吗?

我知道这是一个老问题,但我今天一直在努力解决这个问题。我终于发现,具体来说:

2。您没有使用WebEndpoint或WebServiceHost


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

从哪里获得错误消息?当尝试浏览到“服务帮助页”时?WCF中有一个已知的bug(IIRC至少在4.0之前是这样),服务帮助页面说有一个错误,但操作正常。尝试调用您的操作以查看这是否可行。当我尝试查看服务(通过转到)或尝试在客户端应用程序中创建服务引用时,我会收到错误消息。对于REST端点,不支持“添加服务引用”-因此您遇到了我提到的问题。尝试将服务接口复制到客户端,然后使用
WebChannelFactory
类使用服务。或者您可以使用
WebClient
,这通常非常简单。但您仍然会遇到类似以下异常:InvalidOperationException:要使操作A中的请求成为流,该操作必须具有单个参数。