以不同于GET的方式处理POST

时间:2014-01-01 16:48:34

标签: c# asp.net json post handler

我目前在C#处理程序(.ashx)中使用context.Request.QueryString,因为到目前为止我只需要处理GET帖子。

虽然如果我通过POST方法发送了一个JSON对象怎么办?我知道我应该反序列化已发送的内容,但我的观点是 - 我怎么知道发送源是发送了POST还是GET。

为什么呢?因为我想将处理程序拆分为POST相关函数(通常需要安全性的东西)和更原始的GET相关函数(检索公共信息等)

如果重要,我的代码现在看起来像这样(并且它还没有准备好正确处理POST)。

public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "application/json";
    JavaScriptSerializer jss = new JavaScriptSerializer();

    // Wanna know POST was used here, so I can deserialize the sent JSON data
    // ----

    // Handling GET here, good and working
    if (context.Request.QueryString["aname"] != null
        && context.Request.QueryString["type"] != null)
    {
         string adminName = context.Request.QueryString["aname"];
         if(adminName == "test") { // Return some JSON object }
    }
}

2 个答案:

答案 0 :(得分:5)

您可以访问context.Request,因此您只需使用其HttpMethod property即可查看是POST,GET还是其他内容。

答案 1 :(得分:3)

您可以使用Request.Form[parameter]进行POST。查看相关帖子:How to handle C# .NET GET / POST?

要检查请求是POST还是GET,您可以使用HttpContext.Current.Request.HttpMethod(来自Detect if action is a POST or GET method)。