api - Orchard Core asp net core Web App中的Http Post返回错误请求
问题描述
我在 asp net core web app 项目中使用 Orchard 核心。我有一个带有两个简单获取和发布 API 的控制器。当我使用 OrchardCore 时,Startup.cs 文件具有不同的配置,并且我没有在 configureServices 中使用 services.AddControllers()。在我使用 HttpGet 之前,一切都很好。但是当我想要一个带有 HttpPost 的 Api 时,postMan 说 badRequest。所以我在 Startup.cs 中添加了 services.AddControllers() 并且 post Api 在 post Man 中很好,但是果园项目说我有多个端点。我使用了 services.AddMvc().AddNewtonsoftJson(),一切都很好,但是管理页面没有加载并且出现如下错误:
InvalidOperationException:未找到视图“索引”。搜索了以下位置: /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
对于一个ApiController
inOrchardCore
我希望看到控制器装饰如下。
[ApiController]
[Authorize(AuthenticationSchemes = "Api"), IgnoreAntiforgeryToken, AllowAnonymous]
但是,这取决于您是使用OpenId
模块进行身份验证,还是只需要发布到普通控制器,而没有AuthenticationScheme
根据您在现实生活中实际发布的内容,最好在您的帖子中提供防伪令牌。
推荐阅读
- rtsp - 将 RTMP 转换为 RTSP 和流
- excel - 如何将单元格的值存储在字符串中
- excel - Excel公式检查评估是否大于并返回最大值
- python - 为什么 Azure Active Directory OAuth 对我有效,而对其他人无效?
- asp.net-core - 为什么 GraphQL 查询在花括号前使用“query”关键字?
- go - NewIndexerInformer 和 NewSharedIndexInformer 之间的区别
- python - 将复杂的 JSON 导出为 CSV
- swift - 参数标签 '(of:, with:)' 不匹配任何可用的重载
- tensorflow - 安装 tensorflow 后可以删除 gcc 编译器吗?
- google-bigquery - 在 BigQuery 中展平表