gpt4 book ai didi

.net - 如何解决 "InvalidOperationException:operation must have a single parameter whose type is Stream"

转载 作者:行者123 更新时间:2023-12-01 04:44:11 25 4
gpt4 key购买 nike

浏览服务的 .svc 文件时出错。
InvalidOperationException:要使操作 MethodName 中的请求成为流,该操作必须有一个类型为 Stream 的参数”
服务契约(Contract):

[OperationContract]
[WebInvoke(RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "/upload?filename={filename}&objrid={objrid}")]
string uploadfile(string filename, long objrid, Stream data);`

编译器不生成 .svc 文件。
尽管此操作运行良好。
但是该服务中的其他方法不起作用。
我该如何解决这个问题?

在 web.config 中:
服务标签:
  <service behaviorConfiguration="TransferServiceBehavior" name="namespace.Service">



<endpoint address="/Service" behaviorConfiguration="webby" binding="webHttpBinding" contract="namespace.Icontract" />
<endpoint binding="basicHttpBinding" contract="namespace.Icontract" />

</service>

行为配置:
 <behavior name="TransferServiceBehavior">
<serviceMetadata httpGetEnabled="false"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" maxConcurrentInstances="500"/>
</behavior>

绑定(bind)cinfig:




此操作工作正常,但同一服务契约(Contract)中的其他操作不起作用:
其他操作:
[OperationContract]
[WebGet(RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
UriTemplate = "/ProcessViewRequestMobile")]
Stream ProcessDownload();

当我评论第一个操作时,第二个工作正常。
我怎样才能使我的两种方法都起作用。
我必须在同一个服务契约(Contract)中添加这两种方法。
提前致谢。

最佳答案

好吧,您收到此错误是因为默认的 WCF 流格式化程序不支持此错误。你在尝试。都在同一个方法中。这只是不受支持,即使它似乎以某种方式工作。

如果这不是 REST 端点,您可以使用 MessageContract 将多个参数包装到一个类中来解决此问题。

如果这是 REST 端点或类似的自定义端点,则实际上支持此编程模型,因为 REST 和其他一些场景具有自己的格式化程序,可以正确处理多个参数。但是,如果您继续看到此问题,请确保您的 WebHttpBehavior 设置正确。您还可以通过在绑定(bind)的 TransferMode 中选择 Buffered 选项来解决此问题。但这似乎违背了 Streaming 的全部目的。

关于.net - 如何解决 "InvalidOperationException:operation must have a single parameter whose type is Stream",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10297740/

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