0

我被要求更改旧版.asmxWeb 服务,有一些问题我希望得到一些指导。

Web 方法是这样装饰的:

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

在我的特定方法中,我从数据库返回数据,我使用JSON.

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

在这种情况下:

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

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

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

对于基本的相当模糊的问题,我很抱歉,但我以前没有使用过 .asmx Web 服务。有人可以指出我正确的方向吗?

谢谢

4

2 回答 2

1

EnableSession = true允许您访问Session集合,它是HttpContext.Current.Session. 如果您的 web 方法中的代码不使用Session集合,那么可以安全删除,但如果它确实使用了Session集合,那么删除此属性将导致您的 web 服务逻辑抛出异常,因为它没有访问权限到Session收藏。

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

于 2013-07-02T14:14:13.350 回答
1

正如@Karl 已经说过,如果您需要在 webmethod 中访问 Session,您必须使用所述属性来装饰您的方法。

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

ScriptMethod(ResponseFormat = ResponseFormat.Json)

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

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

ASMX 和 JSON – 常见错误和误解

ASMX ScriptService 错误:安装和配置

于 2013-07-02T14:45:19.127 回答