C# 对GET方法的响应是404“;无法获取”;错误

C# 对GET方法的响应是404“;无法获取”;错误,c#,angular,C#,Angular,我试着学习我的CORS有问题 创建文件proxyconfig.json { "/api/*" : { "target": "http://localhost:9000", "secure": false, "logLevel": "debug" } } 9000是我的后端代理的编号。接下来,该文件将在package.json中使用 "name": "white-space-map-web-ui", "version": "0.0.0", "scr

我试着学习我的CORS有问题

创建文件proxyconfig.json

{
    "/api/*" : {
    "target": "http://localhost:9000",
    "secure": false,
    "logLevel": "debug"
    }
}
9000是我的后端代理的编号。接下来,该文件将在package.json中使用

"name": "white-space-map-web-ui",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --proxy-config proxyconfig.json",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
Ofc是该文件的一部分

我有一个服务,可以从服务中获得客户

这是我的简单服务

import { HttpClient } from '@angular/common/http';
import { Client } from 'src/models/client';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';


@Injectable()
export class ClientService {

    private url : string = '/api/Client';

    constructor(private http : HttpClient){}

    getClients() : Observable<Client[]> {
       return this.http.get<Client[]>('/api/Client');
      }
}
和HTML

<button (click)="getClients()">getClients</button>
getClients
一切正常,但首先我对protecion CORS“Access Controll Allow Origin”有问题,但现在我有问题,因为当我尝试单击获取方法时,我连接到4200代理而不是9000,即我前端的代理而不是后端

这是我的后端:

 public class Program
    {
       private static void Main(string[] args)
        {
            var rc = HostFactory.Run(x =>
            {
                x.Service<OwinBootstrap>(s =>
                {
                    s.ConstructUsing(name => new OwinBootstrap());
                    s.WhenStarted(owinBootstrap => owinBootstrap.Start());
                    s.WhenStopped(owinBootstrap => owinBootstrap.Stop());
                });
                x.RunAsLocalSystem();

                x.SetDescription("White space WebApi ");
                x.SetDisplayName("WhiteSpaceWebApi");
                x.SetServiceName("WhiteSpaceWebApi");
            });

            var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
            Environment.ExitCode = exitCode;
        }
    }


internal class OwinBootstrap
    {
        private readonly IAppSettings _appSettings = new AppSettings();
        private IDisposable _webApi;

        public void Start()
        {
            var baseAdress = _appSettings.WebApiUri;
            _webApi = WebApp.Start<Startup>(baseAdress);
        }

        public void Stop()
        {
            _webApi.Dispose();
        }


    }

 public class Startup
    {
        public void Configuration(IAppBuilder appBuilder)
        {
            // Configure Web API for self-host. 
            var config = new HttpConfiguration();
            config.Routes.MapHttpRoute(
                "DefaultApi",
                "api/{controller}/{id}",
                new { id = RouteParameter.Optional }
            );

            appBuilder
                .UseNinjectMiddleware(new NinjectBootstrap().GetKernel)
                .UseNinjectWebApi(config);
        }
    }


internal interface IAppSettings
{
    string WebApiUri { get; }
}

internal class AppSettings : IAppSettings
{
    public string WebApiUri => ConfigurationManager.AppSettings["WebApiUri"];
}

 <appSettings>
    <add key="WebApiUri" value="http://localhost:9000/" />
  </appSettings>
公共类程序
{
私有静态void Main(字符串[]args)
{
var rc=HostFactory.Run(x=>
{
x、 服务(s=>
{
s、 ConstructUsing(name=>newowinbootstrap());
s、 开始时(owinBootstrap=>owinBootstrap.Start());
s、 停止时(owinBootstrap=>owinBootstrap.Stop());
});
x、 RunAsLocalSystem();
x、 SetDescription(“空白WebApi”);
x、 SetDisplayName(“WhiteSpaceWebApi”);
x、 SetServiceName(“WhiteSpaceWebApi”);
});
var exitCode=(int)Convert.ChangeType(rc,rc.GetTypeCode());
Environment.ExitCode=ExitCode;
}
}
内部类OwinBootstrap
{
私有只读IAppSettings_appSettings=new appSettings();
私有IDisposable_webApi;
公开作废开始()
{
var baseaddress=_appSettings.WebApiUri;
_webApi=WebApp.Start(baseAddress);
}
公共停车场()
{
_Dispose();
}
}
公营创业
{
公共无效配置(IAppBuilder appBuilder)
{
//为自主机配置Web API。
var config=新的HttpConfiguration();
config.Routes.MapHttpRoute(
“DefaultApi”,
“api/{controller}/{id}”,
新建{id=RouteParameter.Optional}
);
应用程序生成器
.UseNinjectMiddleware(新的NinjectBootstrap().GetKernel)
.UseNinjectWebApi(配置);
}
}
内部接口IAppSettings
{
字符串webapuri{get;}
}
内部类AppSettings:IAppSettings
{
公共字符串webapuri=>ConfigurationManager.AppSettings[“webapuri”];
}

好的,所以问题可能是3:

  • 配置更改后是否运行了npm start
  • 尝试将您的proxyconfig.json更改为

    { “/api”:{ “目标”:“, “安全”:错误, “日志级别”:“调试” } }

  • 您的/api/Client可能无法工作,请尝试向邮递员发出请求


  • 问题是npm启动:)。我是一个创建文件的人,但在终端a中写入了ng serve而不是npm start。谢谢。@Błażej如果对您有效,请将答案标记为已接受。很高兴能帮忙:)
     public class Program
        {
           private static void Main(string[] args)
            {
                var rc = HostFactory.Run(x =>
                {
                    x.Service<OwinBootstrap>(s =>
                    {
                        s.ConstructUsing(name => new OwinBootstrap());
                        s.WhenStarted(owinBootstrap => owinBootstrap.Start());
                        s.WhenStopped(owinBootstrap => owinBootstrap.Stop());
                    });
                    x.RunAsLocalSystem();
    
                    x.SetDescription("White space WebApi ");
                    x.SetDisplayName("WhiteSpaceWebApi");
                    x.SetServiceName("WhiteSpaceWebApi");
                });
    
                var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
                Environment.ExitCode = exitCode;
            }
        }
    
    
    internal class OwinBootstrap
        {
            private readonly IAppSettings _appSettings = new AppSettings();
            private IDisposable _webApi;
    
            public void Start()
            {
                var baseAdress = _appSettings.WebApiUri;
                _webApi = WebApp.Start<Startup>(baseAdress);
            }
    
            public void Stop()
            {
                _webApi.Dispose();
            }
    
    
        }
    
     public class Startup
        {
            public void Configuration(IAppBuilder appBuilder)
            {
                // Configure Web API for self-host. 
                var config = new HttpConfiguration();
                config.Routes.MapHttpRoute(
                    "DefaultApi",
                    "api/{controller}/{id}",
                    new { id = RouteParameter.Optional }
                );
    
                appBuilder
                    .UseNinjectMiddleware(new NinjectBootstrap().GetKernel)
                    .UseNinjectWebApi(config);
            }
        }
    
    
    internal interface IAppSettings
    {
        string WebApiUri { get; }
    }
    
    internal class AppSettings : IAppSettings
    {
        public string WebApiUri => ConfigurationManager.AppSettings["WebApiUri"];
    }
    
     <appSettings>
        <add key="WebApiUri" value="http://localhost:9000/" />
      </appSettings>