ASMX Webservice:'匿名类型'错误

Kee*_*ker 1 c# web-services asmx

我正在现有的.Net 3.5网站上创建一个asmx webservice .我想根据密钥返回一篇帖子.我想将帖子作为匿名类型返回,但它给了我以下错误:

无法使用功能"匿名类型",因为它不是ISO-2 C#语言规范的一部分.

这是一个问题的屏幕转储: 无法使用功能

任何想法如何解决这个问题?

注意:我的asmx独立存在.它包含代码,它背后没有.cs.

Ste*_*e B 8

第一个问题是你要回来了object.

当WebService生成定义(WSDL)时,您如何在不知道实际类型的情况下生成定义?

你应该引入一个DTO样式 - 类(没有逻辑,只有数据),如:

[Serializable]
public class Post
{
    public int PostID {get;set;}
    public int ThreadID { get; set; }
    public string Subject { get; set; }
    public string Body { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

并更改您的定义以返回此类.

代码量很少.

[编辑]以上解决方案将解决您的问题.但是,问题的确切来源是这样的:

当您在.cs文件中工作时,使用的编译器是项目目标框架的编译器(此处为3.5).编译发生在编码时.

当您在.asmx文件中工作时,将在加载asp.net应用程序时进行编译.在asp.net运行时的编译器中使用的编译器,对于.Net 3.5,用于2.0运行时的编译器.这是因为Framework 3.5只是一组新的类,但CLR仍在V2中(随V4更改).在这种情况下,即使您的项目是3.5,只有.cs文件中的代码可以使用3.5语言功能.aspx和asmx文件中的所有代码只能使用V2语言功能.