ASMX网络服务和HTTP GET

问题描述:

我想创建一个ASMX webservice,可以执行HTTP GET请求。我有以下简单的代码片段来说明我已经完成了什么。ASMX网络服务和HTTP GET

using System.Web.Script.Services; 
... 

[WebMethod] 
[ScriptMethod(UseHttpGet = true)] 
public string HelloWorld(HttpContext context) 
{ 
return context.Request.Params.Get("userId").ToString(); 
} 

除此之外,我还添加了以下节点在我的Web.config文件

<webServices> 
    <protocols> 
    <add name="HttpGet"/> 
    <add name="HttpPost"/> 
    </protocols> 
</webServices> 

,我现在面临的问题是,我经常收到可怕的“ System.Web.HttpContext cannot be serialized because it does not have a parameterless constructor“错误消息,每当我尝试调试此webservice。我不知道问题是什么,我真的很感激任何帮助我摆脱这个困境。我意识到HTTP GET请求应该是非常简单的,但我真的不确定我的挫折的原因是什么。

我想你想

[WebMethod] 
[ScriptMethod(UseHttpGet = true)] 
public string HelloWorld(int userId) 
{ 
    return userId.ToString(); 
} 

您可以在函数签名中指定的参数,您可以访问的HttpContext作为Context(基类WebService的一个属性),如果你需要它。

+0

以我个人的经验,[ScriptMethod(UseHttpGet = true)]完全不影响服务方法。它不会强制该方法只使用GET,如果没有它,只要您允许它在您的web.config中,您仍可以使用GET调用该方法 – Sal 2014-05-28 11:45:14