Невозможно перейти непосредственно к определенным страницам в приложении React .NET.C#

Место общения программистов C#
Ответить
Anonymous
 Невозможно перейти непосредственно к определенным страницам в приложении React .NET.

Сообщение Anonymous »

Я создал приложение React с помощью .NET (созданное с помощью Visual Studio), и когда я запускаю его локально, все работает нормально. Я опубликовал приложение в Службе приложений Azure, и домашняя страница работает нормально. Однако когда я перехожу непосредственно на определенную страницу (например, https://url/some-page), я получаю ошибку 404 Not Found.
Из своих исследований я знаю, что это что-то связано с маршрутизацией сервера, но как мне настроить сервер так, чтобы он открывал страницы при переходе непосредственно на них?
Из моего файла program.cs

Код: Выделить всё

app.UseDefaultFiles();
app.UseStaticFiles();

if (env.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseRouting();
app.UseCors(CorsHelper.AllowAnyCorsPolicyName);

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
vite.config.ts

Код: Выделить всё

import { fileURLToPath, URL } from 'node:url';

import { defineConfig } from 'vite';
import plugin from '@vitejs/plugin-react';
import fs from 'fs';
import path from 'path';
import child_process from 'child_process';
import { env } from 'process';

const baseFolder =
env.APPDATA !== undefined && env.APPDATA !== ''
? `${env.APPDATA}/ASP.NET/https`
: `${env.HOME}/.aspnet/https`;

const certificateName = "webapp.client";
const certFilePath = path.join(baseFolder, `${certificateName}.pem`);
const keyFilePath = path.join(baseFolder, `${certificateName}.key`);

if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) {
if (0 !== child_process.spawnSync('dotnet', [
'dev-certs',
'https',
'--export-path',
certFilePath,
'--format',
'Pem',
'--no-password',
], { stdio: 'inherit', }).status) {
throw new Error("Could not create certificate.");
}
}

const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` :
env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7109';

// https://vitejs.dev/config/
export default defineConfig({
plugins: [plugin()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
server: {
proxy: {
'^/weatherforecast': {
target,
secure: false
}
},
port: 5173,
https: {
key: fs.readFileSync(keyFilePath),
cert: fs.readFileSync(certFilePath),
}
}
})
Следует отметить, что я удалил WeatherForecastController по умолчанию, поэтому не уверен, имеет ли это какое-то отношение к этому.


Подробнее здесь: https://stackoverflow.com/questions/788 ... ct-net-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»