Kee*_*ker 1 c# web-services asmx
我正在现有的.Net 3.5网站上创建一个asmx webservice .我想根据密钥返回一篇帖子.我想将帖子作为匿名类型返回,但它给了我以下错误:
无法使用功能"匿名类型",因为它不是ISO-2 C#语言规范的一部分.
这是一个问题的屏幕转储:

任何想法如何解决这个问题?
注意:我的asmx独立存在.它包含代码,它背后没有.cs.
第一个问题是你要回来了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语言功能.
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |