2

我用以下项目创建了一个解决方案

FrontEnd 是一个 mvc4 web 应用程序,而 MyWebAPI 是一个 mvc4 webAPI

在此处输入图像描述

我希望能够从我的 FrontEnd 项目中访问 MyWebAPI 控制方法。但它不起作用,因为它只抱怨当我运行 webAPI url 时找不到数据。

我是否需要做更多的事情才能让我的前端可以与 MyWebAPI 对话?

例如,我只是尝试运行这个预先生成的 webAPI 控制方法

public string Get(int id)
{
    return "value";
}

找不到。但是,如果我将启动项目更改为 MyWebAPI 则它可以工作。所以我的问题是如何做到这一点,以便我可以从我的 FrontEnd 项目访问 MyWebAPI?

这个问题实际上与这个问题相同,它没有解释当它们在同一个解决方案中时我如何从前端访问 webAPI

编辑

$(document).ready(function() {
            $("#clickMe").click(function() {
                var id = $("#dataBox").val();
                $.ajax({
                    url: "http://localhost:11982/api/Movie/GetMovie",
                    data: { id: id },
                    type: "get",
                    contentType: "application/json;charset=utf-8",
                    success: function(data) {
                        alert(data);
                    },
                    error: function(jqXHR, status, errorThrown) {
//                      alert("Error " + status + "\nError Thrown" + errorThrown + "\n" + jqXHR )

                    }
                })
            })
        })

2012 年 8 月 30 日更新

我在我的解决方案中更新了不同的包,其中包括 WebAPI beta 到 WebAPI rc 版本。现在由于某种原因,当我向任何 WebAPI 控制器发送表单请求或 ajax 请求时,它会对表单请求响应说没有找到这样的控制器,而对于 ajax 请求,它将永远加载而不返回响应.

以前遇到过类似问题的人吗?

以前的解决方案是在本地 IIS 服务器上运行我的 FrontEnd 和 MyWebAPI。但是,由于我更新了所有软件包,它现在停止工作。

4

1 回答 1

2

似乎您的问题是您需要从 Visual Studio 同时运行 FrontEnd 和 MyWebAPI 项目。实际上,通过解决方案的一个有点模糊的启动选项来配置 Visual Studio 来执行此操作很容易。

右键单击解决方案资源管理器窗格中的解决方案节点(不是同名的项目节点)。从上下文菜单项中,选择“设置启动项目”。在对话框中,单击“Multiple Startup Project”选项并选择 FrontEnd 和 MyWebAPI 项目。单击确定以保存选项。当您运行调试器时,这两个项目现在都应该启动,并且 MyWebAPI 调用将响应前端。只要确保两个项目都在不同的端口上运行。

更新:

Web API RTM 发生了重大变化。其中一项更改是用于提取ApiController动作参数的约定。看看这个 SO 问题和答案中如何使用新属性FromUriFromBody

于 2012-06-04T16:12:22.500 回答