我被要求更改遗留的.asmx
网络服务,有一些问题我会很感激。
网页方法的装饰如下:
[WebMethod(EnableSession = true), ScriptMethod(ResponseFormat = ResponseFormat.Json)]
在我的特定方法中,我从数据库返回数据,我使用JSON
作为对象列表返回。
我注意到JSON
仍未返回ScriptMethod(ResponseFormat = ResponseFormat.Json
部分。
在那种情况下:
我能从这里安全地删除它吗?
如果它仍然有效,是否意味着它可能会在基类或配置文件中的其他地方配置?
(EnableSession = true)
的目的是什么?如果服务不更新数据并且很少更改读取数据,是否需要它?
对于基本相当模糊的问题感到抱歉,但之前我没有使用过.asmx网络服务。有人能指出我正确的方向吗?
由于
答案 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响应需要做些什么: