【问题标题】:How to consume web API service from a webforms application?如何从 Web 表单应用程序使用 Web API 服务?
【发布时间】:2015-09-15 20:14:43
【问题描述】:

我在一个包含多个项目的大型解决方案文件夹中有一个 webforms 应用程序。我想使用一个 Web api 应用程序,它也是解决方案的一部分。所以我的客户如下所示。

function GetText() 
{
    $.getJSON("api/SiteUsers",
        function (data) {
            $("#TestText").append(data);

        });
}

而控制器是一个简单的字符串返回动作。

[HttpGet]
public string TestText()
{
    return "this is a text";
}

当我尝试调用服务时出现 404 错误,找不到以下链接 http://localhost:1234/MyAspxProj/MyFolder/MyPage/api/SiteUsers

我可以理解这可能是因为它试图从 webforms 应用程序中查找资源。如何调用 web api 服务?我愿意接受所有建议和建议。

【问题讨论】:

    标签: c# asp.net asp.net-web-api webforms asp.net-web-api2


    【解决方案1】:

    假设您的 API 托管在 localhost:1111 上,而您的 webforms 应用程序托管在 localhost:2222 上

    首先确保您可以通过以下方式获得刚刚创建的 API 的结果:

    localhost:1111/api/SiteUsers

    一旦您确定上述 URL 会返回您期望的内容,您就可以确定您的 API 设置正确。

    现在让我们进入下一个问题,从另一个应用程序访问 API(即没有与 API 相同的主机,即 localhost2222)

    要从另一个域上的应用程序访问 API,您需要在 WebAPI 上启用 CORS 支持。互联网上有许多资源可以解释如何实现这一目标:google for enabling cors in web api 2

    在您的 web api 项目上设置 CORS 后,您将能够从任何应用程序访问您的 API。

    记住:如果客户端位于不同的域并且客户端是基于 Web 的客户端(在您的情况下是 Web 表单应用程序),您只需要启用 CORS

    我希望这会给你一些方向。

    【讨论】:

    • 谢谢!!我会调查你的答案,然后告诉你我发现了什么。
    【解决方案2】:

    根据您提供的信息,在我看来您输入的网址不正确。假设您的 [HttpGet] 函数位于“api/SiteUsers”的文件中,您将使用如下网址:“api/SiteUsers/TestText”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 2012-02-25
      • 1970-01-01
      相关资源
      最近更新 更多