gpt4 book ai didi

c# - 使用 MessageContract 在启动时使 WCF 服务崩溃

转载 作者:太空狗 更新时间:2023-10-29 21:30:14 27 4
gpt4 key购买 nike

我正在尝试将 MessageContract 添加到我的 WCF 服务,类似于这个问题中发生的事情:WCF: using streaming with Message Contracts

这是我得到的异常:无法加载操作“UploadFile”,因为它具有类型为 System.ServiceModel.Channels.Message 的参数或返回类型,或者具有 MessageContractAttribute 和其他不同类型参数的类型。使用 System.ServiceModel.Channels.Message 或带有 MessageContractAttribute 的类型时,该方法不得使用任何其他类型的参数。

这是我的契约(Contract):

[ServiceContract]
public interface IFile
{
[OperationContract]
bool UploadFile(FileUpload upload);
}
[MessageContract]
public class FileUpload
{
[MessageHeader(MustUnderstand = true)]
public int Username { get; set; }
[MessageHeader(MustUnderstand = true)]
public string Filename { get; set; }
[MessageBodyMember(Order = 1)]
public Stream ByteStream { get; set; }
}

这是我在 app.config 中使用的绑定(bind)配置:

  <netTcpBinding>
<binding name="TCPConfiguration" maxReceivedMessageSize="67108864" transferMode="Streamed">
<security mode="None" />
</binding>
</netTcpBinding>

现在我认为这可能与我使用的绑定(bind)类型有关,但我不完全确定。

最佳答案

从评论看来,您遇到的问题是,一旦您开始使用消息协定,就必须将它们用于所有参数,这意味着您的方法不能返回 bool,它必须返回另一个消息协定,例如 FileUploadResult。

尝试将其更改为返回 void 并查看它是否加载,以及是否确实将其更改为返回一个被归类为消息协定的类。

关于 this MSDN page 的第一个注释就此问题发出警告,并包含一个可能提供更多信息的链接。

关于c# - 使用 MessageContract 在启动时使 WCF 服务崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6106299/

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