我感兴趣地阅读了以下帖子,因为它是我遇到的问题的精确复制品(并让我疯了) “对于操作中的请求,UploadFile是一个流,操作必须有一个类型为Stream的参数.” – http://social.msdn.microsoft.com
“对于操作中的请求,UploadFile是一个流,操作必须有一个类型为Stream的参数.” – http://social.msdn.microsoft.com/Forums/en/wcf/thread/80cd26eb-b7a6-4db6-9e6e-ba65b3095267
我几乎遵循了我找到的所有代码/示例,但仍无法解决此错误 –
http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx
我想要实现的是使用标准的文件名/流参数从Android设备发布一个图像(jpeg / png).很可能它是一个简单的东西我错误配置,误解或遗漏但我需要有一个概念证明的解决方案.
public interface IConXServer
{
[OperationContract]
[WebInvoke(UriTemplate = "UploadImage({fileName})", Method="POST")]
void UploadImage(string fileName, Stream imageStream);
}
public class ConXWCFServer : IConXServer
{
public void UploadImage(string fileName, Stream imageStream)
{
//implement image save
}
}
web.config设置
– >
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="webHttpEndpoint" helpEnabled="false"/>
</webHttpEndpoint>
</standardEndpoints>
<bindings>
<webHttpBinding>
<binding name="webHttpBinding" transferMode="Streamed"/>
</webHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling maxConcurrentCalls="2147483647" maxConcurrentSessions="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
使用vs2010和IIS Express.如果我注释掉上述方法,则所有其他方法都可以工作并返回数据以及wsdl查询
提前问候并表示感谢
克恩
接下来虽然REST的webHttpBinding支持Stream body参数前面的参数,但其他绑定不支持,并且必须有单个Stream参数或带有标题和流体的消息合约.
所以,最后,问题不在于REST webHttpBinding,我敢打赌它的工作正常.如果不是,我会非常震惊,因为你没有做任何不应该在该部门工作的事情.问题是您希望元数据端点为您定义的服务契约生成WSDL,而这只是不受支持.
