0

你好:

我正在向 mi asp.net web api 发送以下消息

var user ={
            Username: "user",
            Password: "pass"

        };
        $.ajax({
            url: 'http://WebApiDir',
            type: 'POST',
            contentType: "application/json",
            data: JSON.stringify(user),
            success: function (data) {

            },
        });

我在 DelegatingHandler 上捕获了请求。我的问题是如何将 HttpContent 中包含的消息解析为 NameValueCollection 类

我尝试执行以下操作

var sQuery = await request.Content.ReadAsFormDataAsync().Result;

但这会产生异常,因为 Result attr 为空。

感谢您的回答

4

2 回答 2

0

这是我做的事情:-

  $.ajax
                        ({
                            url: 'Default.aspx/MyMethod',
                            type: 'POST',
                            dataType: "json",
                            contentType: 'application/json; charset=utf-8',
                            data: JSON.stringify({ ID: ID }),
                            success: onSuccess,
                            fail: onFail
                        });

然后在 C# 方面:-

[WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        // MyMethod is used to pass Identifcation number from client side to server side via Ajax.
        public static string MyMethod(string ID)
        {
              ........ do whatever needs to be done ........

              return string.Format("Thanks for calling me with Ajax, the ID: " + data);
        }
于 2013-10-18T19:58:04.907 回答
0

如果您确实在使用 WebAPI,则应该让框架为您完成繁重的工作。

首先,您需要确保您的路由设置正确,并且您实际上是从您的 javascript 调用路由。在您的情况下, App_Start/WebApiConfig.cs 看起来像:

public static void Register(HttpConfiguration config)
{
    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

然后,给您的 api 控制器一个有意义的名称,例如 Users 并将该方法定义为帖子,因为您正在发布用户信息,将 User 作为参数

public class User
{
    public string Username { get; set; }
    public string Password { get; set; }
}

public string Post(User user)
{
    // perform actions on user data
    return "success";
}

最后,您需要在 javascript 调用中正确定义路由。

var user ={
    Username: "user",
    Password: "pass"
};

$.ajax({
    url: 'http://WebApiDir.com/api/Users',
    type: 'POST',
    contentType: "application/json",
    data: user,
    success: function (data){},
});
于 2013-10-18T20:09:06.333 回答