【发布时间】:2021-12-15 20:41:50
【问题描述】:
当我尝试在 https://centroban.herokuapp.com/api/callback 上发布 JSON 数据时出现 404 错误。它是在 c# 和 razor 页面上编写的。请帮帮我吧
这是 Callback.cs 文件
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System;
using VkNet.Abstractions;
using VkNet.Model;
using VkNet.Model.RequestParams;
using VkNet.Utils;
namespace Centroban
{
[Route("api/[controller]")]
[ApiController]
public class CallbackController : ControllerBase
{
/// <summary>
/// Конфигурация приложения
/// </summary>
/// private readonly IConfiguration _configuration;
private readonly IVkApi _vkApi;
private readonly IConfiguration _configuration;
public CallbackController(IVkApi vkApi, IConfiguration configuration)
{
_vkApi = vkApi;
_configuration = configuration;
}
[HttpPost]
public IActionResult Callback([FromBody] Updates updates)
{
// Проверяем, что находится в поле "type"
switch (updates.Type)
{
// Если это уведомление для подтверждения адреса
case "confirmation":
// Отправляем строку для подтверждения
return Ok(_configuration["Config:Confirmation"]);
case "message_new":
{
// Десериализация
var msg = Message.FromJson(new VkResponse(updates.Object));
// Отправим в ответ полученный от пользователя текст
_vkApi.Messages.Send(new MessagesSendParams
{
RandomId = new DateTime().Millisecond,
PeerId = msg.PeerId.Value,
Message = msg.Text
});
break;
}
}
// Возвращаем "ok" серверу Callback API
return Ok("ok");
}
}
}
这是 Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using VkNet;
using VkNet.Abstractions;
using VkNet.Model;
namespace Centroban
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddControllers();
services.AddSingleton<IVkApi>(sp =>
{
var api = new VkApi();
api.Authorize(new ApiAuthParams { AccessToken = Configuration["Config:AccessToken"] });
return api;
});
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// 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.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
});
}
}
}
我猜路由有问题,但无论如何,不知道如何处理它们。 这是我的网站https://centroban.herokuapp.com
【问题讨论】:
-
您调用了
.MapRazorPages(),但没有调用任何.MapControllers()/.MapControllerRoute()方法。 docs.microsoft.com/en-us/aspnet/core/fundamentals/…
标签: c# asp.net-core bots razor-pages vk