C# 对GET方法的响应是404“;无法获取”;错误
我试着学习我的CORS有问题 创建文件proxyconfig.jsonC# 对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
{
"/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启动:)。我是一个创建文件的人,但在终端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>