Orchard Core asp net core Web App returns 中的 Http Post 错误请求

Http Post in Orchard Core asp net core Web App returns bad request

我在 asp 网络核心网络应用程序项目中使用 Orchard 核心。我有一个带有两个简单 get 和 post Apis 的控制器。当我使用 OrchardCore 时,Startup.cs 文件有不同的配置,我不在 configureServices 中使用 services.AddControllers()。 在我使用 HttpGet 之前,一切都很好。但是当我想要一个 Api 和 HttpPost post 时,男人说 badRequest。所以我在 Startup.cs 中添加了 services.AddControllers() 并且 post Api 在 post Man 中很好但是果园项目说我有多个端点。 我使用了 services.AddMvc().AddNewtonsoftJson(),一切都很好,但管理页面没有加载并出现如下错误:

InvalidOperationException: The view 'Index' was not found. The following locations were searched: /Areas/OrchardCore.AdminDashboard/Views/Dashboard/Index.cshtml /Areas/OrchardCore.AdminDashboard/Views/Shared/Index.cshtml /Views/Shared/Index.cshtml /Pages/Shared/Index.cshtml

如果你能帮助我如何调用 Post Api,我将不胜感激。 这是我的代码:

[HttpPost("post")]
    public Task<string> post()
    {
        return Task.FromResult("hiPost");
    }

    [HttpGet("get")]
    public Task<string> get()
    {
        return Task.FromResult("hiGet");
    }

这是我的 startup.cs

 public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }
        public void ConfigureServices(IServiceCollection services)
        {
            //services.AddControllers();
            services.AddOrchardCms();
            services.AddMediatR(typeof(SelectedWebSiteBlogQueryHandler).Assembly);
            services.AddAutoMapper(typeof(Startup));
            services.AddCors();
            services.AddMvc().AddNewtonsoftJson();

        }

        public void Configure(IApplicationBuilder app, IHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseCors(o => o.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseOrchardCore();
        }
    }

您的控制器可能缺少 IgnoreAntiForgeryToken 属性。

AntiForgery 默认由 OrchardCore

启用

对于 OrchardCore 中的 ApiController,我希望看到控制器装饰如下。

[ApiController]
[Authorize(AuthenticationSchemes = "Api"), IgnoreAntiforgeryToken, AllowAnonymous]

然而,这取决于您是否使用 OpenId 模块进行身份验证,或者只需要 post 到普通控制器,而不需要 AuthenticationScheme

根据您在现实生活中的实际 post,最好提供一个防伪标记作为您 post 的一部分。