React Vite Web Api с развернутым приложением ASP.NET Core, но axios завершается с ошибкой 404C#

Место общения программистов C#
Ответить
Anonymous
 React Vite Web Api с развернутым приложением ASP.NET Core, но axios завершается с ошибкой 404

Сообщение Anonymous »

Я создал полнофункциональное приложение веб-API, в котором интерфейсом является ASP.NET Core с React.js (я использую React Vite), а сервером — библиотека классов C#.
Мне удалось развернуть интерфейс на IIS для локалхост: 80. Когда я просматриваю сайт из IIS, меня встречает созданный мной значок загрузки, который показывает, что интерфейс развернут правильно, но проблема в том, что загрузка никогда не прекращается, потому что запрос axios к "/api/account/ getcurrentuser» выдает ошибку 404. Серверной части не удается найти http://localhost:80/api/account/getcurrentuser.
Вот подробная информация об ошибке.
Так происходит. для всех запросов Axios. Сервер возвращает ошибку 404, сообщая, что ему не удалось найти ресурс. Физический путь, по которому он ищет, — C:\Website\EDIConverterDemo\wwwroot\api\account\getcurrentuser. Папка wwwroot находится в развернутой папке моего проекта. Оно должно туда заглянуть и мне нужно что-то добавить, или оно направлено не туда?
Приложение отлично работает при локальном запуске (не на IIS), а маршрут в мой контроллер соответствует URL-адресу в моем запросе GET axios.
Я думал, что мне, возможно, также потребуется развернуть внутреннюю библиотеку классов, но некоторые исследования в этом направлении показали, что я этого не делаю. необходимо развернуть его отдельно.
Я думаю, моя проблема заключается в Реагировать на проблему, особенно потому, что я использую Vite.
Это мой файл vite.config.js.
Может ли это быть проблема CORS или проблема с прокси-сервером Vite? Когда я запускаю свой проект локально (не в IIS), интерфейс реагирования основан на порте 3000, а все вызовы, начинающиеся с «/api», перенаправляются на мои контроллеры, которые размещены на порту 7264. Нужно ли мне изменить порты в прокси?

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

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react';

export default defineConfig({
plugins: [react()],
server: {
port: 3000,
strictPort : true,
proxy: {
'/api' : {
target: 'https://localhost:7264',
changeOrigin: true,
secure: false,enter image description here
rewrite: (path) => path.replace(/^\/api/, '/api')
}
}
}
})
Или это может быть проблема с серверной частью?
Это контроллер, к которому должен обращаться /api/account/getcurrentuser:< /p>

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

namespace EDIConverterWeb.Web.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AccountController : ControllerBase
{
[HttpGet]
[Route("getcurrentuser")]
public User GetCurrentUser()
{
//here is some code that returns null if no user is signed in
//otherwise, returns the currently logged-in user (object)
}
}
}
Это мой файл Program.cs:
Что-то неправильно настроено, что приводит к пропуску контроллера?

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

namespace EDIConverterWeb.Web
{
public class Program
{
private static string CookieScheme = "EDIConverter";
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddAuthentication(CookieScheme)
.AddCookie(CookieScheme, options =>
{
options.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = context =>
{
context.Response.StatusCode = 403;
context.Response.ContentType = "application/json";
var result = System.Text.Json.JsonSerializer.Serialize(new { error = "You are not authenticated" });
return context.Response.WriteAsync(result);
}
};
});

builder.Services.AddSession();

// Add services to the container.

builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
// The default HSTS value is 30 days.  You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.UseSession();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");

app.MapFallbackToFile("index.html"); ;

app.Run();
}
}
}
Вот как выглядит мой файл web.config: ОБНОВЛЕНИЕ:
Я не думаю, что это проблема с React. Можете ли вы помочь мне понять, как получить API-часть моего приложения? работает при развертывании?

Подробнее здесь: https://stackoverflow.com/questions/791 ... h-a-404-er
Ответить

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

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

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

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

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