Шаблон проекта React + ASP.NET Core не может подключиться к новой конечной точке контроллера от клиентаC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Шаблон проекта React + ASP.NET Core не может подключиться к новой конечной точке контроллера от клиента

Сообщение Anonymous »

Я использую встроенный шаблон проекта для React и ASP.NET Core из Visual Studio 2022, который создает клиентское приложение React и серверное приложение ASP.NET Core.
Я хотел протестировать добавление нового контроллера помимо контроллера прогноза погоды по умолчанию и воздействие на эту конечную точку с помощью перехватчика useEffect в файле app.jsx. Когда я добавляю асинхронную функцию для целевой точки «Тест», конечная точка в моем новом контроллере никогда не попадает в цель. Я пытался структурировать контроллер так же, как контроллер прогноза погоды, но новый контроллер никогда не запускается от клиента. Я могу достичь конечной точки, используя чванство. Я чувствую, что есть простое решение этой проблемы — какая-то регистрация контроллера, которой мне не хватает, но я не могу ее найти.
Это мой app.jsx код> файл. Я добавил ловушку useState для установки и получения константы testMessage, а также асинхронный метод populateTestData для получения данных из контроллера Test. Get endpoint для установки testMessage.. р>
import { useEffect, useState } from 'react';
import './App.css';

function App() {
const [forecasts, setForecasts] = useState();
const [testMessage, setTestMessage] = useState();

useEffect(() => {
populateWeatherData();
populateTestData();
}, []);

const contents = forecasts === undefined
?
Loading... Please refresh once the ASP.NET backend has started. See https://aka.ms/jspsintegrationreact for more details.
:


Date
Temp. (C)
Temp. (F)
Summary



{forecasts.map(forecast =>

{forecast.date}
{forecast.temperatureC}
{forecast.temperatureF}
{forecast.summary}

)}

;

const message = testMessage === undefined ?
Loading from Server...
: {testMessage};
return (

Weather forecast
This component demonstrates fetching data from the server.
{contents}
{message}

);

async function populateWeatherData() {
const response = await fetch('weatherforecast');
const data = await response.json();
setForecasts(data);
}

async function populateTestData() {
const response = await fetch('test');
const data = await response.json();
setTestMessage(data);
}
}

export default App;

Это мой TestController. Я попытался структурировать это аналогично стандартному WeatherForecastController. Функция populateTestData должна достичь конечной точки Get() в этом контроллере, но моя точка останова при вызове этого метода никогда не будет достигнута
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace ReactDotNetPractice.Server.Controllers
{
[Route("[controller]")]
[ApiController]
public class TestController : ControllerBase
{
private readonly ILogger _logger;

public TestController(ILogger logger)
{
_logger = logger;
}

[HttpGet(Name = "GetTest")]
public string Get()
{
return "This is the test message you should receive from the Test endpoint.";
}
}
}

WeatherForecastController — в основном это для справки. Конечная точка Get в этом контроллере обрабатывается методом populateWeatherData в app.jsx каждый раз при загрузке страницы, как и должно быть:
using Microsoft.AspNetCore.Mvc;

namespace ReactDotNetPractice.Server.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};

private readonly ILogger _logger;

public WeatherForecastController(ILogger logger)
{
_logger = logger;
}

[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
}

Файл Program.cs, если это полезно, хотя я не вижу нигде, где бы конкретно настраивался WeatherForecastController
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

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

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

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

app.Run();


Подробнее здесь: https://stackoverflow.com/questions/791 ... t-from-cli
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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