【发布时间】:2016-02-12 08:01:12
【问题描述】:
我真的想要你的选择。 我们使用 web api 2 将 .net MVC 3 项目更新为 MVC 4,这是一个 web 服务。 ajax 调用来自具有 Devextreme/Phonegap 的 android 机器。
更新网络服务后,当我从 android 调用登录时,我得到 "未找到与请求 URI 'http://www.whatever.gr/MVCService/Actions/Login' 匹配的 HTTP 资源"
我想设置路由,以便 MVC 服务的所有方法都可以有参数可选。 我无法完成这项工作..
android 应用上不能改源码,ajax 调用如下代码
function doLogin(username, password, callback) {
loading(true);
var dataStr = "uid=" + uid + "&username=" + username + "&password=" + password;
var success = false;
var token = "";
$.ajax({
type: "POST",
url: registrationServiceUrl + 'Login',
data: dataStr,
beforeSend: function () {
//alert("registration no: " + registrationid);
},
success: function (retval) {
if (retval.indexOf('SUCCESS') == 0) {
success = true;
token = retval.substring(8);
//setTokenToSettings(token);
} else {
success = false;
};
callback(success, token);
loading(false);
},
error: function (retval) {
callback(success, token);
loading(false);
}
});
}
MVC中的路由是
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
//config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
当我在浏览器中使用以下参数点击时,我得到了响应 'http://www.whatever.gr/MVCService/Actions/Login?param1=1¶m=2¶m3=3'。
我想要这种行为,何时点击“http://www.whatever.gr/MVCService/Actions/Login” 要么 'http://www.whatever.gr/MVCService/Actions/Login?param1=1¶m=2¶m3=3&invalidParamName=x'。
以及使用空参数值触发的 Web 服务方法。
但没有在方法中设置可选参数
public string Login(string pamar1 = "",string param2 = "", string param3 = "")
正如我之前解释的那样,使用 MVC 3 可以正常工作。
提前感谢您的宝贵时间。
【问题讨论】:
-
您好,我认为这与您的客户端应用程序无关。不久前我遇到了同样的问题。请看一下这篇帖子。stackoverflow.com/questions/19093603/simple-post-to-web-api/… 并在这个问题中查看其背后的原因stackoverflow.com/questions/19424493/…
-
我试过 [HttpGet(), HttpPost()] public JsonResult
Login([FromBody]string uid, [FromBody]string username, [FromBody]string password) 但我得到一个错误发生了 -
我认为这是 ajax 调用 data: dataStr $.ajax({ type: "POST", url: registrationServiceUrl + 'Login', data: dataStr, 但这在 MVC 3 上是如何工作的??
-
你不能使用多个 [FormBody] 属性
标签: android ajax asp.net-mvc asp.net-mvc-4 iis-7