Я действительно хочу ваш вариант. Мы обновляем проект .net MVC 3 до MVC 4 с веб-api 2, это веб-сервис. Звонки ajax - это андроидные машины с Devextreme/Phonegap.MVC 4 Web API 2 ajax вызов все параметры дополнительно
После обновления веб-службы, когда я называю логин от андроида я получаю «Нет HTTP ресурс не был найден соответствующий запрос URI" http://www.whatever.gr/MVCService/Actions/Login»
Я хочу, чтобы установить маршрут таким образом, что все методы Служба MVC может иметь необязательные параметры. я не могу получить эту работу ..
Мы не можем изменить источник на андроид приложения и 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.
И метод веб-службы для запуска с пустыми значениями параметров.
Но без установки дополнительных параметров в методе
public string Login(string pamar1 = "",string param2 = "", string param3 = "")
С MVC 3 это работает нормально, как я уже говорил раньше.
Спасибо заранее и за ваше время.
Привет, я не думаю, что это связано с вашим клиентским приложением. Некоторое время назад у меня была такая же проблема. Пожалуйста, взгляните на этот пост.http: //stackoverflow.com/questions/19093603/simple-post-to-web-api/19094245#19094245, а также увидите причину этого в этом вопросе http://stackoverflow.com/questions/19424493/why-do-asp-net-web-api-allow-only-one-parameter-for-post-method – Amila
Я пробовал [HttpGet(), HttpPost()] public JsonResult Логин ([ FromBody] string uid, [FromBody] string username, [FromBody] строковый пароль), но я получаю Произошла ошибка –
Dimitrios
Я думаю, что это данные вызова ajax: dataStr $ .ajax ({ type: "POST", url: registrationServiceUrl + 'Login', data: dataStr, , но как это работает на MVC 3? – Dimitrios