gpt4 book ai didi

带流的 WCF Rest Web 服务

转载 作者:行者123 更新时间:2023-12-02 01:49:13 25 4
gpt4 key购买 nike

我饶有兴趣地阅读了下面的文章,因为它是我所遇到的问题的精确复制品(并且让我发疯)“为了使 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 查询

提前致以问候和感谢克恩

最佳答案

您提到了 WSDL,这让我相信您在尝试浏览服务的元数据端点时遇到了错误。因此,首先,WSDL 和 REST 不能一起使用,因此您根本不应期望将其用于 REST 接口(interface)。忘记 REST 世界中存在的服务元数据概念。

下一步 虽然 REST 的 webHttpBinding 确实支持 Stream body 参数前面的参数,但其他绑定(bind)不支持,并且必须有单个 Stream 参数或带有 header 和流正文的消息协定。

所以,最后,问题根本不在于 REST webHttpBinding,我敢打赌它工作得很好。如果不是这样,我会感到绝对震惊,因为你没有做任何不应该在该部门工作的事情。问题是您期望元数据端点为您定义的服务契约生成 WSDL,但这不受支持。

关于带流的 WCF Rest Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6366489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com