霍洛:
我将以下消息发送到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为null,这会产生异常。
感谢您的回答
答案 0 :(得分: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);
}
答案 1 :(得分: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,并将该方法定义为帖子,因为您要发布用户信息,将用户作为参数
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){},
});