消费web api,不同机器上的端口

时间:2017-02-11 17:01:24

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

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

现在我的uri看起来像这样

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

在web api方面,我需要启用cors与我的mvc app进行通信。

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

此设置在我的计算机上正常运行,因为我想与我的朋友分享这个,如何在每台计算机上使此端口值22562266相同?\

或者,如果您不建议将此值配置为什么?

  

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

3 个答案:

答案 0 :(得分:1)

端口号只是工具(VS),便于您在本地调试(localhost) - 它"分隔"您的每个网站都指定一个随机端口号,所有这些都存在于本地机器的“localhost”(又名"域")下。

事实上,您可以自己分配一个(或更改VS指定的任何内容),并确保它不会与本地计算机中使用的任何其他服务/现有端口冲突(更多信息如下)。

  

"与我的朋友分享这个"

不确定这意味着什么。如上所述localhostlocal,假设在(实时/生产)网络上 - 那么分配一个端口号(在你的服务器/ IIS设置中) - 它&#39 ; 你的 API,这样你就可以决定"如何外部"朋友"可以访问/连接。

警告:

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

H个。

答案 1 :(得分:0)

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

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

来自MSDN

  

参数 origin 类型:System.String以逗号分隔的原始列表   允许访问资源。使用“*”允许所有。

答案 2 :(得分:0)

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

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

主持人条目看起来像127.0.0.1 apionlocal.com

运行" ipconfig"检索计算机的netrowk IP在命令提示符下命令并与您的朋友分享。

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

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

您的朋友需要使用域名&#34; apionlocal.com&#34;来调用API。

您可以在&#34; EnableCors&#34;中配置多个来源。使用逗号分隔值。

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