首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否需要ASMX启用会话和ResponseFormat?

是否需要ASMX启用会话和ResponseFormat?
EN

Stack Overflow用户
提问于 2013-07-02 13:59:30
回答 2查看 6.8K关注 0票数 1

我被要求改变一个遗留的.asmx web服务,有几个问题我希望得到一些指导。

web方法的装饰方式如下:

代码语言:javascript
复制
  [WebMethod(EnableSession = true), ScriptMethod(ResponseFormat = ResponseFormat.Json)]

在我的特定方法中,我将从数据库返回数据,并将其作为使用JSON的对象列表返回。

我注意到返回的JSON仍然没有:ScriptMethod(ResponseFormat = ResponseFormat.Json部件。

在这种情况下:

  • 我能安全地把这个从这里移开吗?
  • 如果它仍然工作,这是否意味着它将配置在基类或配置文件的其他地方?
  • (EnableSession = true)的目的是什么?如果服务不更新数据,并且读取的数据很少更改,那么它是否是必需的?

对于那些基本的相当模糊的问题,我很抱歉,但我以前从未使用过.asmx web服务。有人能给我指个正确的方向吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-02 14:45:19

正如@Karl已经说过的,如果您需要在webmethod中访问会话,则必须使用上述属性来修饰您的方法。

现在,我看到人们抱怨webmethod没有在SO和Asp.net官方论坛上返回JSON响应,尽管他们用

代码语言:javascript
复制
ScriptMethod(ResponseFormat = ResponseFormat.Json)

因为它们在web.config中可能缺少配置。

我建议您阅读Dave的以下文章,这些文章可能帮助您理解用ASMX返回JSON响应需要做些什么:

ASMX和JSON -常见错误和误解

ASMX ScriptService错误:安装和配置

票数 1
EN

Stack Overflow用户

发布于 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数据)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17427600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档