我在同一解决方案中使用.NET Core-backend有一个Angular 4前端。
据我所知,无法以相同的方式从Angular访问窗口对象,因此没有好的方法来解码获取当前位置/环境。
使用.NET Core-backend我也没有angular.cli.json文件,因此我可以配置环境/ environment.prod.ts环境/ environment.local.ts类型的设置。 / p>
我想知道为什么我无法在不指定主机名(我无法访问主机名)的情况下访问说我的后端API而没有专门输入它?
在本地主机上http://localhost:port/api/ /例如,当我希望能够使用' / api //&#访问它时,我必须指定http://localhost:port 39;直接
因此,在本地工作时,我有一个环境并部署了另一个环境。所以我无法使用localhost URL完全部署它。
Angular的HTTP客户端在请求中使用相同主机名的正确方法是什么?
我已经设置了像我所说的环境,但在发布版本中,它并没有选择environment.prod.ts文件。我想这与.NET Core解决方案有关,而不是与Angular有关。
有什么建议吗?
通过生产/开发/本地的配置设置或使用Angular 4在.NET Core解决方案中使用环境设置。
答案 0 :(得分:0)
您必须更改Startup.cs。 AnyWay,如果您使用Visual Studio 2017,则可以使用角度模板
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
{
HotModuleReplacement = true
});
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseDefaultFiles();
app.UseStaticFiles();
app.Use(async (context, next) =>
{
if (context.Response.StatusCode == 404 && !Path.HasExtension(context.Request.Path.Value) && !context.Request.Path.Value.StartsWith("api"))
{
context.Request.Path = "/Index.cshtml";
context.Response.StatusCode = 200;
await next();
}
});
}
因此,http调用可以像
this._http.get('/api/controller/action')