2014-01-23 2 views
1

Я делаю веб-api в Asp.Net MVC5 с веб-api2. Я сделал пост, как это:Создание сообщения в Web Api 2

public class SmsClientsController : ApiController 
{ 
    public void Post(Client client) 
    { 
     //Add Client to database 
    } 
} 

Клиент Модель выглядит так:

public class Client 
{ 
    public int Id { get; set; } 
    [Required] 
    public string Username { get; set; } 
    [Required] 
    public string Password { get; set; } 
    public int Role { get; set; } 
} 

и я назвал этот метод пост на кнопку мыши, просто из JavaScript в стороне клиента, как это:

function SendSms() { 
    var studentData = { 
     "Username": "Anjin", 
     "Password": "Pradhan", 
     "Role": "1" 
    }; 
    $.ajax({ 
     type: "POST", 
     url: "http://192.168.0.102/ProductsApp/api/SmsClients", 
     data: JSON.stringify(studentData), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     processData: true, 
     success: function (data, status, jqXHR) { 
      console.log(data); 
      console.log(status); 
      console.log(jqXHR); 
      alert("success..." + data); 
     }, 
     error: function (xhr) { 
      alert(xhr.responseText); 
     } 
    }); 
} 

Но в ответ он просто предупреждает пустое поле оповещения. И когда я проверил консоль с помощью пожарной ошибки, произошла ошибка:

"NetworkError: 405 Method Not Allowed - http://192.168.0.102/ProductsApp/api/SmsClients" 

Почему так происходит ??? Этот метод Post недействителен. Пожалуйста, помогите мне исправить это ...

ответ

0

Просто Изменение IP-адрес (192.168.0.102) с localhost работал для меня в моем локальном сервере

0

Я не знаю вашу конфигурацию, но по умолчанию веб-страница не может совершать вызовы служб (API) в домене, отличном от того, с которого появилась страница. Скорее всего, вам просто нужно реализовать поддержку CORS.

http://blogs.msdn.com/b/carlosfigueira/archive/2012/02/20/implementing-cors-support-in-asp-net-web-apis.aspx

3

ТЕЧЕНИЕ ЖЕ ПРОЕКТОВ (SAME DOMAIN)

url: "http://192.168.0.102/ProductsApp/api/SmsClients", 

Если оба WebAPI и MVC Pages находятся в одном проекте, я имею в виду в том же домене, тогда url должен быть таким, как показано ниже:

url: "/api/values", 

в различных проектах (домены)

Если они находятся в разных проектах, то вам необходимо включить CORS. Чтобы включить cors, сначала получите следующий nuget.

PM> Install-Package Microsoft.AspNet.WebApi.Cors 

Затем включите CORS в WebApiConfig.cs -

config.EnableCors(); 

Затем в действие контроллера вы можете поместить этот атрибут. Убедитесь, что позволяет только правильные корни вместо *

[EnableCors("*", "*", "*")] 

и теперь из другого проекта, вы можете сделать запрос следующим образом -

<script src="~/Scripts/jquery-1.10.2.min.js"></script> 
<script> 

    function SendSms() { 
     var studentData = { 
      "Username": "Anjin", 
      "Password": "Pradhan", 
      "Role": "1" 
     }; 
     $.ajax({ 
      type: "POST", 
      url: "http://localhost:23133/api/values", 
      data: JSON.stringify(studentData), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      processData: true, 
      success: function (data, status, jqXHR) { 
       console.log(data); 
       console.log(status); 
       console.log(jqXHR); 
       alert("success..." + data); 
      }, 
      error: function (xhr) { 
       alert(xhr.responseText); 
      } 
     }); 
    } 
</script> 
<input type="submit" onclick="SendSms()" value="Click" />