如何在一个 Visual Studio 解决方案中的 2 个内部 API 之间发出 API 请求?

Posted

技术标签:

【中文标题】如何在一个 Visual Studio 解决方案中的 2 个内部 API 之间发出 API 请求?【英文标题】:How can I make API requests between 2 internal APIs in one Visual Studio solution? 【发布时间】:2021-11-28 11:26:01 【问题描述】:

我创建了一个 API .NET CORE 项目,它作为我的启动项目运行良好,并指定了 5001 作为端口,例如其中一个调用是:

https://localhost:5001/api/Values/TESTME

我在启动时添加了一个站点 cors 策略,如下所示:

  services.AddCors(options =>
        
            options.AddPolicy("SiteCors", builder =>
            
                builder.AllowAnyHeader();
                builder.AllowAnyMethod();
                builder.AllowAnyOrigin();
            );
        );

现在我添加了另一个项目(在不同的本地主机端口上运行)并将其设置为启动项目 - 它尝试执行 WebRequest:

    string url = "https://localhost:5001/api/Values/TESTME";
    try
    
        WebRequest request = WebRequest.Create(url);
        WebResponse response = request.GetResponse();
        response.Close();
    
    catch (Exception ex)
    
        
    

因为No connection could be made because the target machine actively refused it.而被拒绝

我认为添加防火墙规则可能是有序的,但是 1) 我究竟如何为此添加防火墙规则?和2)这甚至会起作用吗?我需要两个项目同时在 VS 中“运行”吗?

【问题讨论】:

这是为了好玩还是你真的需要这个? @ErmiyaEskandary 我真的很想让这个工作 - 我正在尝试使用调用 API 的 Razor 页面构建前端 - 它们不一定必须在同一个项目中但我认为在这一点上进行测试会更容易。我真的没有时间为此学习 .JS 框架,所以是的,我有点需要它:/ 打开防火墙上的端口 是的,你需要在单独的实例中运行它们,除非你有一个在 IIS 或 alt 中运行。 实际上只是在 Visual Studio 的单独实例中运行它们似乎工作正常,不需要添加任何防火墙规则(当然必须确保端口不同)。感谢您的帮助! 【参考方案1】:

确保您在单独的端口上的单独实例中运行两者,应该没问题(如果您没有明确阻止防火墙中的任何内容)。

您还可以在 IIS 服务器或自托管中运行一个 API,而在 Visual Studio 中运行另一个。

【讨论】:

如果它们都在不同的实例上,这意味着我可以同时调试它们! (如有必要)所以我选择了这个选项。

以上是关于如何在一个 Visual Studio 解决方案中的 2 个内部 API 之间发出 API 请求?的主要内容,如果未能解决你的问题,请参考以下文章

怎么在visual studio 里连接数据库

如何在Visual Studio中发布类库?

visual studio把右边的解决方案关闭了,怎么搞出来

Visual Studio 2005,如何获得解决方案中使用项目的位置?

如何在 Visual Studio 2010 中正确引用 dll?

如何在visual studio2015 中配置编写C,C++程序