2

我有一个 .net 4.0 Framework WCF 服务。我将此 WCF 引用到 .NET Framework 2.0 网站(不是 Web 应用程序,只是一个网站)。

但是当我调用 WCF 的方法时,我得到一个异常,例如:

There was an error generating the XML document.

内部例外是:

System.Uri 无法序列化,因为它没有无参数构造函数。

我确实有一个无参数构造函数,它在我的 WCF 中继承,如下所示:

//Service Class
public class MyWcfService : IWcfService
{
     //I even put this hoping to make it work
     public MyWcfService()
     {
     }
     public MyEntity GetEntity(ArgumentObject arg)
     {
          return DoGetMyEntity(arg);
     }
}


[Serializable]
public class MyEntity : EntityBase
{   
    public DateTime LastUpdate { set; get; }

    //Here is the parameterless constructor
    public MsisdnInformation()
    {
        this.LastUpdate = DateTime.Now;
    }
}

[Serializable]
public class EntityBase
{   
    //Here is the parameterless constructor
    public EntityBase()
    {

    }
}

此 WCF 正在与其他项目合作(但这些项目是 .NET 3.0 或更高版本的框架项目。其中一些项目是网站,其中一些是 WepApplication。

到目前为止,在我的互联网搜索中,我发现没有任何东西可以帮助我解决这个问题。

我需要做什么来修复这个错误?

4

2 回答 2

3

正如约翰桑德斯在评论我的问题时指出的那样,我需要改变

httpContext.Request.Url

httpContext.Request.Url.ToString()

为了通过

System.Uri

从 .NET 2.0 框架到 WCF 的参数。

我有点尴尬,我忽略了这个参数。

于 2013-10-03T12:53:27.287 回答
2

使用DataContract而不是 Serializable。这意味着序列化将由 DataContractSerializer 处理。

DataContract(和 DataMember)属性取代 Serializable 属性。

于 2013-10-03T11:41:29.667 回答