我有两个使用VS2008构建的.NET 3.5 WCF服务.
我在Silverlight中有两个WCF客户端来使用这些服务.使用"添加服务引用"生成客户端.我正在使用Silverlight 4.
其中一个代理是使用Specified每个属性的属性生成的.这是我的服务方法的'message-in'类:
// properties are generated for each of these fields
private long customerProfileIdField;
private bool customerProfileIdFieldSpecified;
private bool testEnvField;
private bool testEnvFieldSpecified;
Run Code Online (Sandbox Code Playgroud)
现在我的其他服务(仍然使用Silverlight客户端)不会生成Specified属性.
现在我不关心"良好SOA的原则".我只是想摆脱这些该死的属性,因为在我正在做的事情中我绝对讨厌它们.
两种服务之间必须有一些区别 - 但我不想完全撕掉它们以找出差异.
一个类似的问题之前有一个答案' 你不能这样做 ' - 这绝对不是真的,因为我有它 - 我只是不知道我做了什么不同.
编辑:我现在处于这样的情况:我将Silverlight 4代理重新生成到我的3.5 WCF服务(全部在同一个localhost机器上),有时我会获得"指定"属性,有时我不会.我不再认为(我最初怀疑)这仅仅是由于某些端点配置或服务级别[属性].消息本身中的某些触发器会导致生成(或不生成)Specified.可能涉及许多因素,或者可能是非常简单的因素.
可能重复:
WCF不会返回int
尝试使用我自己的WCF服务,如下所示:
[ServiceContract]
public interface IReturnService
{
[OperationContract]
bool GetTransactionList(int lRetailStoreID, int lWorkstationNmbr, int lTaNmbr);
}
Run Code Online (Sandbox Code Playgroud)
但是当我从客户端调用服务时,我得到的错误是没有GetTransactionList带3个参数的方法,而是得到这个标题:
myWCF.GetTransactionList(int lRetailStoreID, bool lRetailStoreIDSpecified,
int lWorkstationNmbr, bool lWorkstationNmbrSpecified,
int lTaNmbr, bool lTaNmbrSpecified,
out bool GetTransactionListResult,
out bool GetTransactionListResultSpecified)
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么会发生这种情况以及如何解决它?如果需要更多信息,请与我们联系.
我对WCF Web服务很陌生,直到现在我使用.asmx Web服务,我从来没有遇到类似的问题.
我有一个类Attachement,我用它来保存网站上的一些附件.
[DataContract]
public class Attachement
{
private string _Name;
[Column]
[DataMember(Order = 1)]
public string Name
{
get { return _Name; }
set { _Name = value; }
}
.
.
.
private bool _IsNew;
[DataMember(Order = 6)]
public bool IsNew
{
get { return _IsNew; }
set { _IsNew = value; }
}...
Run Code Online (Sandbox Code Playgroud)
问题是当我向WCF服务发出一些请求时,字段IsNew总是为False,即使我确定我在请求集中将它发送给True.与DateTime字段相同的问题 - 我使用值<> DateTime.Min发送它,但在Web服务中,我总是将此字段与DateTime.Min相等.
我可以使用字符串而不是bool和DateTime来解决这个问题,但是我无法解析这种类型的变量真的很烦人.
我究竟做错了什么?