C# 使用MessageContract时,WCF客户端语法与服务语法不同
我有一个使用C# 使用MessageContract时,WCF客户端语法与服务语法不同,c#,visual-studio-2010,wcf,C#,Visual Studio 2010,Wcf,我有一个使用MessageContract 客户端的语法发生了变化。我不知道为什么。我使用的是VisualStudio2010,目标框架是4.0 这是我的合同: [MessageContract] public class DownloadRequest { [MessageBodyMember] public string FileName; } [MessageContract] public class RemoteFileInfo : IDisposable {
MessageContract
客户端的语法发生了变化。我不知道为什么。我使用的是VisualStudio2010,目标框架是4.0
这是我的合同:
[MessageContract]
public class DownloadRequest
{
[MessageBodyMember]
public string FileName;
}
[MessageContract]
public class RemoteFileInfo : IDisposable
{
[MessageHeader(MustUnderstand = true)]
public string FileName;
[MessageHeader(MustUnderstand = true)]
public long Length;
[MessageBodyMember(Order = 1)]
public System.IO.Stream FileByteStream;
public void Dispose()
{
if (FileByteStream != null)
{
FileByteStream.Close();
FileByteStream = null;
}
}
}
我的服务合同如下:
[OperationContract]
RemoteFileInfo DownloadFile(DownloadRequest request);
具体实施如下:
public RemoteFileInfo DownloadFile(DownloadRequest request)
{
RemoteFileInfo result = new RemoteFileInfo();
.........
....
return result;
}
我发现了以下错误
有什么想法吗
编辑:
我在错误消息中使用了流式传输的基本http绑定,您似乎需要再次刷新服务引用。
在visual studio中,单击菜单项目->选择“添加服务引用…”。是否已更新客户端的服务引用?每次更改服务中的代码时,都必须更新客户端上的服务引用!当然了。但不知何故,我的方法调用并没有在语法中显示对象(消息契约)。尝试两侧编译,关闭IDE,然后重新打开IDE。如果我没记错的话,这似乎解决了问题。就像IDE在关闭和重新打开之前无法识别更改一样。“这是瞎猜。”布莱恩,谢谢。但是当我切换到DataContract而不是MessageContract时,我的代码运行良好。从上两天起我就一直在搞这个。