请帮忙。我有一个反应应用程序,从VS2017启动时可以完美运行。在Azure VM(IIS-8,Windows Server(上托管相同的应用程序时,会给我404或500错误。
我的托管目录结构适用于我的 .Net 应用程序以及混合的 .net 和 React 应用程序,但不适用于我的新 React 专用应用程序。
我的目录结构是wwwroot>Dashboard。我将生产版本复制到此仪表板文件夹。
我的网络配置是:
`<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".Dashboard.dll" stdoutLogEnabled="true" stdoutLogFile=".logsstdout" />
<rewrite>
<rules>
<rule name="React Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</location>
</configuration>`
在此处输入图像描述
据我所知,asp.net 核心应用程序使用服务。AddSpaStaticFiles 来为 React 应用程序提供服务,而不是使用 url 重写。
我建议您检查Startup.cs的配置和配置服务方法,以确保已添加SPA设置。
代码如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// In production, the React files will be served from this directory
services.AddSpaStaticFiles(configuration =>
{
configuration.RootPath = "ClientApp/build";
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action=Index}/{id?}");
});
app.UseSpa(spa =>
{
//the source path of the react application
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
}