【问题标题】:Host ASP.Net web api and consume from another MVC application托管 ASP.Net web api 并从另一个 MVC 应用程序使用
【发布时间】:2013-04-10 07:25:48
【问题描述】:

我是 ASP.Net MVC 和 ASP.Net web api 的新手。

我从事过 Web 服务并使用它们。

但我不确定如何托管 ASP.Net web api 并从另一个 ASP.Net MVC 应用程序中使用它。我发现了一些样本,人们使用的是同一个项目中的 api。在现实世界中,我真的怀疑使用仅限于一个项目。

能否请一些机构发布一些可以解释相同的示例或链接?

【问题讨论】:

    标签: asp.net-mvc-3 asmx asp.net-web-api


    【解决方案1】:

    如果您主要使用 API 从您的 Web 客户端进行 AJAX 类型的调用,那么在 MVC Web 应用程序中托管 ASP.NET Web API 非常有意义。将 API 和 Web 应用程序放在同一个项目中消除了需要 JSONP 的跨域 Ajax 调用的问题。但是,如果需要,ASP.NET Web API 可以使用自定义格式化程序(如 WebApiContrib 提供的 JsonMediaTypeFormatter 等自定义格式化程序)轻松支持 JSONP。

    ASP.NET Web API 使开发 REST API 变得容易。您使用与在 MVC 中开发控制器相同的约定。要将它与您的 Web 应用程序分开创建,只需创建一个 MVC 4 项目并使用 ApiController 而不是用于呈现视图的标准控制器来创建您的控制器。然后就像任何 Web 应用程序一样将您的应用程序部署到 IIS(您也可以在 Windows 服务之类的东西中自托管 ASP.NET Web API)。这里是an example on the official ASP.NET Web API website that calls a REST API developed in ASP.NET Web API from a console application。此站点上还有更多示例。

    【讨论】:

    • 但是,在某些业务需求中,web api 服务器需要与 web 服务器位于不同的访问层(例如,为了满足安全要求)。在那些情况下,我们别无选择,只能使用传统的 Web 服务消费?
    • @HoàngLong - 什么是“传统网络服务消费”?什么是“不同的访问层到网络服务器”?
    • @KevinJunghans:我的意思是,为了适应支付安全标准 (PCI),Web 服务需要位于与 Web 服务器不同的网络中。 Web服务器通常连接到Internet,因此受到攻击的机会很高。另一方面,Web 服务位于 LAN 网络中,因此它可能更安全。万一 Web 服务器被黑客入侵,攻击者仍然无法直接访问数据库、重要数据......网络服务。
    • @HoàngLong - 您假设 Web 服务和数据库需要位于同一台服务器上,但事实并非如此。您可以将 Web 应用程序和 Web 服务放在 DMZ 中的服务器上,并将数据库服务器放在 DMZ 与企业或数据中心网络之间的防火墙后面。
    • @KevinJunghans:我的意思是web服务和数据库在同一个局域网,不需要同一个服务器。您的 Web 服务必须具有访问数据库的权限(例如,作为用户名/密码、连接字符串...),对吗?即使它是加密的,也有可能被攻击者破解。有了访问权限,它可以轻松绕过任何防火墙,因为攻击者可以像您的 Web 服务一样调用数据库
    猜你喜欢
    • 2011-04-14
    • 2011-01-11
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    相关资源
    最近更新 更多