【问题标题】:consuming web api, ports on different machine使用 web api,不同机器上的端口
【发布时间】:2017-02-11 17:01:24
【问题描述】:

我的简单 web 应用程序有 web api 和 web mvc 项目。从 mvc app 我正在使用 ajax 使用 web api 服务。

现在我的 uri 看起来像这样

var uri = 'http://localhost:2266/api/cars';

在 web api 方面,我需要启用 cors 以与我的 mvc 应用程序通信。

[EnableCors(origins: "http://localhost:2256", headers: "*", methods: "*")]

这个设置在我的机器上工作得很好,因为我想和我的朋友分享这个设置,我怎样才能使这些端口值 22562266 在每台机器上都相同?\

或者,如果您不建议使这些值可配置?

谢谢,但显然我不够清楚:我问我怎么知道 不同的计算机应该使用哪个端口,并在此基础上包括 那个端口而不是这个 2256、2266?

【问题讨论】:

  • 用逗号分隔出多个值

标签: c# .net asp.net-mvc asp.net-web-api


【解决方案1】:

端口号只是工具 (VS),使您可以轻松地进行本地调试 (localhost) - 它通过分配一个 随机 端口号来“分隔”您的每个网站居住在“localhost”(又名“域”)下的本地计算机中。

实际上,您可以自己分配一个(或更改 VS 分配的任何内容),但需要注意的是确保它不会与本地计算机中使用的任何其他服务/现有端口冲突(更多内容见下文)。

“与我的朋友分享”

不确定这意味着什么。如上所述localhostlocal,因此假设在(实时/生产)网络上 - 然后分配一个端口号(在您的服务器/IIS 设置中) - 它是 您的 em> API,因此您“决定”外部“朋友”如何访问/连接。

注意事项:

如上所述,就像在您的本地环境(本地限制较少)中一样,在生产/实时互联网中,除了标准端口(80、443、20、21、22、25 等),您可能会遇到防火墙问题,使用哪些端口(与其他现有服务冲突)等,这是一个广泛的话题,坦率地说,自从我完成网络操作 - TLDR 以来已经很长时间了;如果它们是完全独立的应用程序(看起来),那么你最好在现场做同样的事情 - 例如子域 - www.foo.com (mvc) api.foo.com (api) 并且根本不处理分配端口号手动(默认值将适用 - 80 用于 http443 用于 @987654329 @)。

Hth.

【讨论】:

    【解决方案2】:

    您可以用逗号分隔多个来源:

    [EnableCors(origins: "http://localhost:2256,http://localhost:2266", headers: "*", methods: "*")]
    

    来自MSDN

    参数 origins 类型:System.String 以逗号分隔的来源列表 允许访问该资源。使用“*”表示全部允许。

    【讨论】:

      【解决方案3】:

      用于 Web API 应用程序托管的端口将无法在您的计算机之外访问,并且当您关闭并打开 Visual Studio 并再次运行 Web API 时,它可能会发生变化。

      最好在本地计算机上使用域名(例如“apionlocal.com”)托管您的 Web API,并在本地计算机上创建一个主机条目。

      主机条目看起来像127.0.0.1 apionlocal.com

      通过在命令提示符下运行“ipconfig”命令检索您计算机的网络 IP 并与您的朋友分享。

      你的朋友还需要在他的机器上输入你机器的 IP 的主机条目。

      主机条目看起来像<<your computer IP>> apionlocal.com

      您的朋友需要使用域名“apionlocal.com”调用API。

      您可以使用逗号分隔值在“EnableCors”中配置多个来源。

      EnableCors(origins: "http://localhost:2256,<<Url of your friend's application>>", headers: "*", methods: "*")]
      

      【讨论】:

      • 注意:您所做的假设 - ipconfig - “朋友”在同一个本地(子)网络中吗?如果不是,那是否是可公开路由的 IP?如果是:本地计算机是否运行已配置用于外部通信的 IIS?如果不是:除了检查前面提到的 IIS 检查之外还有更多工作要做
      • 是的,我假设两台计算机都在同一个网络中。如果不是这样,那么肯定还有更多工作要做。
      猜你喜欢
      • 2016-02-23
      • 2020-09-22
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      相关资源
      最近更新 更多