首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在VS 2017中如何设置角7与网络核心web api进行通信

在VS 2017中如何设置角7与网络核心web api进行通信
EN

Stack Overflow用户
提问于 2019-01-08 05:50:16
回答 2查看 1.5K关注 0票数 1

我到处寻找一个好的答案。我想要解决的问题是.我有一个VS 2017 (社区)项目,它有一个带有净核心网络api后端的角锥7应用程序,所有这些都在同一个项目中。我可以使用Postman成功地测试API,并从数据库中获取一些简单的数据。然而,当我试图使用角前端做同样的,我得到一个ERRCONNREFUSED错误。

经过几次相互冲突/令人沮丧的网络搜索,以找到一个简单的答案,我开始尝试一个proxy.config.json文件。

proxy.config.json

代码语言:javascript
运行
复制
{
  "/api": {
    "target": "http://localhost:8888",
    "secure": false
  }
}

我启动的角度应用程序通过npm和它启动端口4200如预期。

我启动了dotnet,它也成功运行了。

Startup.cs

代码语言:javascript
运行
复制
     app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller}/{action=Index}/{id?}");
        });

        app.UseSpa(spa =>
        {

            spa.Options.SourcePath = "ClientApp";

            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer(npmScript: "start");
            }
        });

package.json

代码语言:javascript
运行
复制
{  
"name": "client-app",
 "version": "0.0.0",
 "scripts": {
 "ng": "ng",
 "start": "ng serve --proxy-config proxy.config.json",
...}

我得到的错误如下:

在尝试从localhost:4200到localhost:8888 (ERRCONNREFUSED)代理请求/api/客户端时发生了错误。

我觉得有件简单的事情我只是忽略了。

EN

回答 2

Stack Overflow用户

发布于 2019-01-08 06:18:45

Proxy.config.json (从未见过)感觉它的目的是让您的后端nodejs服务器将请求发送到另一个web服务器,因此它应该指定另一个服务器。您似乎已经声明此服务运行在您的本地主机上的8888上,但显然它不是..

Web浏览器脚本安全模型通常围绕客户端页脚本编写,只能够与来自该页面的服务器进行通信。因此,如果您在http://myapi.myhost.com上有一个api (正在生产中),并且在您的本地机器上设置了您的角应用程序,那么页面来自本地机器,只能与本地机器上的服务器通信,因此本地主机上的服务器:4200(可能是nodejs)必须代表页面代理请求到myapi.myhost.com。

作为另一个(更好的)选项,您可以配置api (不同主机/端口),这样就可以从您的前端应用程序访问api,即使承载api的服务器没有为您的应用提供服务。

您说您在postman中有一个工作请求,该请求的目标可能是运行api的web服务器,因此配置代理,使其成为目标,而不是localhost:8888 (如果您发布工作邮递员请求,即使是url邮递员点击的屏幕截图也会帮助我们调试)。

如果api真的运行在8888上,并且您希望通过代理而不是CORS来解决这个问题,那么我们需要做更多的工作来找出为什么它没有连接。

票数 0
EN

Stack Overflow用户

发布于 2019-01-09 05:27:57

谢谢大家的快速反应。我发现让别人问我问题很有帮助。具体来说,来自IP Kaal的关于CORS的设置。在尝试回复的过程中,我发现我没有在Startup ConfigureServices方法中注册CORS。一旦我这样做,api就像预期的那样与角前端一起工作。再次感谢大家。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54085865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档