-1

我有一个 Visual Studios C# 类库(A5Lib)和一个 WCF 服务项目(A5Services)。A5Services 项目引用 A5Lib 并且 Web 服务函数使用在 A5Lib 中创建的类(作为参数/返回对象)。

我的 ASP Web 项目也将使用 A5Lib 中的类,所以我不想将这些对象移动到 Web 服务中。

问题是当我尝试运行 A5Services 时,出现以下错误:

错误:无法从http://localhost:16344/UserServices.svc获取元数据如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:16344/UserServices.svc的 MSDN 文档 元数据包含无法解析的引用:“http://localhost:16344/UserServices.svc”。内容类型应用程序/soap+xml;服务http://localhost:16344/UserServices.svc不支持 charset=utf-8. 客户端和服务绑定可能不匹配。远程服务器返回错误:(415) Unsupported Media Type.HTTP GET Error URI: http://localhost:16344/UserServices.svc 下载“http://localhost:16344/UserServices.svc”时出错。请求失败并显示错误消息:--#content{ FONT-SIZE: 0.7em; 垫底:2em;MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; 左边距:0px;颜色:#000000;字体家族:Verdana;背景颜色:白色}P{边距顶部:0px;边距底部:12px;颜色:#000000;FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; 填充右:5px;边框顶部:#f0f0e0 1px 实心;边距顶部:-5px;填充左:5px;字体大小:1.2em;填充底部:5px;左边界:#f0f0e0 1px 实心;填充顶部:5px;边框底部:#f0f0e0 1px 实心;FONT-FAMILY:Courier New;背景颜色:#e5e5cc}.heading1{MARGIN-TOP:0px;填充左:15px;字重:正常;字体大小:26px;边距底部:0px;填充底部:3px;左边距:-30px;宽度:100%;颜色:#ffffff;填充顶部:10px;字体家族:Tahoma;背景颜色:#003366}.intro{MARGIN-LEFT:-15px}ServiceService


服务遇到错误。

一个 ExceptionDetail,可能由 IncludeExceptionDetailInFaults=true 创建,其值为:System.InvalidOperationException:在调用 WSDL 导出扩展时引发异常:System.ServiceModel.Description.DataContractSerializerOperationBehavior 合同:http ://tempuri.org/:IUserServices----> System.Runtime.Serialization.InvalidDataContractException:无法序列化类型“A5Lib.Appliance”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。在 System.Runtime.Serialization.DataContract.DataContractCriticalHelper.ThrowInvalidDataContractException(字符串消息,类型类型)在 System.Runtime.Serialization.DataContract.DataContractCriticalHelper.CreateDataContract(Int32 id,RuntimeTypeHandle typeHandle,类型类型)在 System.Runtime.Serialization.DataContract。 DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id,

这是我从中得出的结论:

无法序列化类型“A5Lib.Appliance”。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。

Visual Studios 不允许我用这些属性(即使使用 System.Runtime.Serialization)在 A5Lib(编译错误)中标记这些类/数据成员。有什么理由吗?

4

2 回答 2

0

我将 [Serializable] 添加到所有类中,它神奇地工作............

于 2012-04-10T23:50:29.770 回答
0

我必须明确添加 System.Runtime.Serialization 汇编参考。不知道为什么因为你说 VS 在你输入 using 语句时似乎解决了它?

于 2014-04-02T23:52:53.737 回答