【问题标题】:How to call web api method from mvc application http url?如何从 mvc 应用程序 http url 调用 web api 方法?
【发布时间】:2014-05-12 14:21:36
【问题描述】:

我在一个项目中有 MVC 应用程序,在单独的项目中有 Web api 项目中的场景。两个项目都在相同的解决方案中。我的 web api 项目有 UserManagerAPIController。它有 CreateUser 方法。我想从我的 MVC 控制器中的 UserManagerAPIController 访问 CreateUser。我想传递 JSON 数据来创建用户。 我正在尝试在 mvc 项目中的 Index.aspx 中调用它:

function SendCustomer() {
                var parameters = { "FirstName": "John", "LastName": "Doe", "Username": "johndoe","Password" :"john@123"}

                $.ajax({
                    contentType: 'application/json',    
                    url: "UserManager/CreateUser",                       
                    type: "POST",
                    data: JSON.stringify(parameters),
                    success: function (data) {

                    },
                    error: function (xhr) {
                        alert(xhr.toString());
                    }
                });
            }

但无法在另一个项目中点击 CreateUser 方法。应该是什么问题?

【问题讨论】:

  • 其他项目是否在不同的域下?除非返回值为 JSONP,否则无法跨域调用。

标签: jquery asp.net-mvc asp.net-web-api


【解决方案1】:

有很多建议,

  1. 为什么你做了两个项目? WebApi 可以在 MVC 应用中轻松管理。
  2. 要调用 web api,你必须使用/api/UserManager url。
  3. 还需要遵循form方法。如果您在CreateUser 上提到了[HttpGet] 注解,则在调用此api 时必须使用Get form 方法。
  4. 如果你不想在 MVC 应用程序中集成 webapi,则会抛出跨源资源共享的错误。为此,您必须将 CreateUser 定义为 [EnableCors] 注释。

作为参考检查这个 - http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    相关资源
    最近更新 更多