是否ASMX Web服务启用会话和ResponseFormat

时间:2013-07-02 13:59:30

标签: asp.net json web-services

我被要求更改遗留的.asmx网络服务,有一些问题我会很感激。

网页方法的装饰如下:

  [WebMethod(EnableSession = true), ScriptMethod(ResponseFormat = ResponseFormat.Json)]

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

我注意到JSON仍未返回ScriptMethod(ResponseFormat = ResponseFormat.Json部分。

在那种情况下:

  • 我能从这里安全地删除它吗?

  • 如果它仍然有效,是否意味着它可能会在基类或配置文件中的其他地方配置?

  • (EnableSession = true)的目的是什么?如果服务不更新数据并且很少更改读取数据,是否需要它?

对于基本相当模糊的问题感到抱歉,但之前我没有使用过.asmx网络服务。有人能指出我正确的方向吗?

由于

2 个答案:

答案 0 :(得分:1)

EnableSession = true可让您访问Session集合,该集合是HttpContext.Current.Session的一部分。如果您的Web方法中的代码不使用Session集合,那么删除是安全的,但如果它确实使用了Session集合,那么删除此属性将导致您的Web服务逻辑抛出异常,因为它无法访问Session集合。

ScriptMethod(ResponseFormat = ResponseFormat.Json)明确定义此Web方法将返回JSON,但由于JSON是默认的返回类型,因此删除它并不重要。所以简短的回答是,是的,删除它是没关系的,但是将它留在那里也不会有害(实际上我认为这样做会更好,因为它明确说明这个东西正在返回JSON数据)。 / p>

答案 1 :(得分:1)

AS @Karl已经说过,如果你需要在webmethod中访问Session,你需要使用上述属性来装饰你的方法。

现在我看到人们抱怨webmethod没有在SO和Asp.net官方论坛上返回JSON响应,即使他们已经用<​​/ p>装饰了他们的方法

ScriptMethod(ResponseFormat = ResponseFormat.Json)

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

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

ASMX and JSON – Common mistakes and misconceptions

ASMX ScriptService mistake: Installation and configuration