【问题标题】:Visual Studio 2010 cannot access the webapi projectVisual Studio 2010 无法访问 webapi 项目
【发布时间】:2012-06-08 11:18:10
【问题描述】:

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

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

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

我是否需要做更多的事情才能让我的 FrontEnd 与 MyWebAPI 通信?

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

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

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

这个问题实际上与这个one 相同,但它没有解释当它们在同一个解决方案中时我如何从前端访问 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。但是,由于我更新了所有软件包,它现在停止工作了。

【问题讨论】:

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


    【解决方案1】:

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

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

    更新:

    Web API RTM 中有重大更改。其中一项更改是用于提取 ApiController 操作参数的约定。看看FromUriFromBody这两个新属性是怎么用的in this SO question and answer

    【讨论】:

    • 我试过了,还是不行。它们在不同的端口上,但同样的问题仍然存在。我可以从该项目中的视图访问 webAPI。但是通过使用我前端的视图,我不能。我添加了用于获取数据的脚本
    • 这种行为听起来更像是路由配置的问题。要解决此问题,如果您的计算机上安装了 IIS 或 IIS Express,则可以使两个项目作为单独的网站运行。从项目属性选项卡(双击项目中的 Properties 节点),选择 Web 选项卡。选择“使用本地 IIS Web 服务器”并输入网站根目录的名称。 Visual Studio 将在 IIS 中为您创建网站。创建每个网站后分别对其进行测试。如果可行,您应该能够使用网站 URL 从前端调用 MyWebAPI URL。
    • 感谢它现在有效!我更改了这两个项目的 Web 属性,因此它使用 IIS 代替开发服务器。
    • 对不起,我重新提出了这个问题。因为自从我更新了解决方案中的软件包后,它就停止了工作。如果我只需将 URL 输入到 Web 浏览器中的地址栏,我就可以访问 webapi。但是,如果我通过表单发送请求或发送 ajax 请求,则它不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 2011-02-13
    相关资源
    最近更新 更多