c# - 将 ASP.NET Core 2.1 和 Angular 6 项目发布到 Azure
问题描述
我一直在尝试将项目发布到 Azure Web 服务。我使用 dotnet cli 工具生成了项目,当它生成项目时,我删除了提供的 ClientApp 文件夹并使用 Angular CLI 生成了一个新的 Angular 项目。现在我在前端有 Angular 6,在后端有 Entity Framework Core 的 Asp.NET core 2.1。我编写了一个简单的网站,可以在我的本地主机上完美运行。现在我想将它发布到 Azure。发布过程本身是成功的,我可以在下面看到一条消息,但是当 URL 在浏览器中打开时,它会显示以下内容: 然后我尝试诊断并解决 Azure 上的问题,这是我得到的: 完整报告:
在发布期间,我配置了一些设置:
但仍然没有运气。以前我使用与 core 2.0 和 angular 5 相同的方法,效果很好。现在我遇到了 core 2.1 和 angular 6 的问题
这是 Startup.cs:
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.SpaServices.AngularCli;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Tokens;
using MovieApp.Models;
using System.IO;
using System.Text;
namespace MovieApp
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("EnableCORS", builder =>
{
builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().AllowCredentials().Build();
});
});
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "http://localhost:63269",
ValidAudience = "http://localhost:63269",
// ValidIssuer = "https://nqmoviesng.azurewebsites.net",
// ValidAudience = "https://nqmoviesng.azurewebsites.net",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("superSecretKey@345"))
};
});
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddMvc();
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/dist";
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseAuthentication();
app.UseCors("EnableCORS");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
app.UseSpaStaticFiles();
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");
}
});
}
}
}
.csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
<IsPackable>false</IsPackable>
<SpaRoot>ClientApp\</SpaRoot>
<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**
</DefaultItemExcludes>
<!-- Set this to true if you enable server-side prerendering -->
<BuildServerSideRenderer>false</BuildServerSideRenderer>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="2.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
有任何想法吗?
解决方案
我更改了 angular.json 文件。将“outputPath”:“dist/ClientApp”替换为“outputPath”:“dist”,它起作用了!
推荐阅读
- ruby-on-rails-5 - figaro 没有在 Rails 控制器中选择 env var
- reactjs - 启用一个组件显示来自两个 api 提取的数据
- php - 在 Windows 2016 服务器上使用 PHP 中的 MailJet Wrapper 发布请求时出现错误 500
- node.js - 如何使用 multer 在 NodeJS 中添加图片上传支持?
- documents4j - Documents4j - RemoteConverter 输入无效
- rancher - 在托管网络面板的服务器上安装 Rancher v2.4.4 时连接到 WebSocket 时出错
- python - 编程语言编辑器 Python
- laravel - Laravel SMTP Gmail 失败
- asp.net-core - 如何确保 ASP.NET Core 的 IFormFile 流读取的内容不超过文件 Content-Length 中指定的内容?
- javascript - 从格式化字符串转换为数字并返回