我被要求改变一个遗留的.asmx web服务,有几个问题我希望得到一些指导。
web方法的装饰方式如下:
[WebMethod(EnableSession = true), ScriptMethod(ResponseFormat = ResponseFormat.Json)]在我的特定方法中,我将从数据库返回数据,并将其作为使用JSON的对象列表返回。
我注意到返回的JSON仍然没有:ScriptMethod(ResponseFormat = ResponseFormat.Json部件。
在这种情况下:
(EnableSession = true)的目的是什么?如果服务不更新数据,并且读取的数据很少更改,那么它是否是必需的?对于那些基本的相当模糊的问题,我很抱歉,但我以前从未使用过.asmx web服务。有人能给我指个正确的方向吗?
谢谢
发布于 2013-07-02 14:45:19
正如@Karl已经说过的,如果您需要在webmethod中访问会话,则必须使用上述属性来修饰您的方法。
现在,我看到人们抱怨webmethod没有在SO和Asp.net官方论坛上返回JSON响应,尽管他们用
ScriptMethod(ResponseFormat = ResponseFormat.Json)因为它们在web.config中可能缺少配置。
我建议您阅读Dave的以下文章,这些文章可能帮助您理解用ASMX返回JSON响应需要做些什么:
ASMX和JSON -常见错误和误解
ASMX ScriptService错误:安装和配置
发布于 2013-07-02 14:14:13
EnableSession = true允许您访问Session集合,这是HttpContext.Current.Session的一部分。如果web方法中的代码不使用Session集合,那么删除是安全的,但是如果它确实使用Session集合,则删除该属性将导致web服务逻辑抛出异常,因为它将无法访问Session集合。
ScriptMethod(ResponseFormat = ResponseFormat.Json)显式地定义这个web方法将返回JSON,但是由于JSON是默认的返回类型,所以删除它并不重要。因此,简单的回答是,删除它是可以的,但是把它留在那里不会有什么害处(事实上,我认为这样做更好,因为它明确声明这个东西正在返回JSON数据)。
https://stackoverflow.com/questions/17427600
复制相似问题