web api POST returns 500 错误与 AllowAnonymous 请求

web api POST returns 500 error with AllowAnonymous Requests

我在本地服务器上设置了一个 DNN 9.2 网站。我使用 HttpPOST 将 JSON 发送到 web.api。这是上周的工作,现在在我尝试从 Angular 4.1 升级到 4.3.

时停止工作

当我尝试从我的应用程序或 post 人工调用访问 api 端点时,我收到 500 错误并且没有消息。

这是我的控制器代码:

[HttpPost]
[ActionName("postPost")]
[AllowAnonymous]
public ApiResult UpsertPost([FromBody]Post post)
{
  try
  {
    DO STUFF HERE
  }
  catch (System.Exception ex)
  {
    CATCH ERROR
  }
}

这里有趣的是,这是有效的,我所做的只是更改为使用 Angular 4.3 中的新 httpClient。我知道 api 端点正在接收请求。

我尝试了什么:

  1. 我试图通过使用 post 人工调用使 angular 脱离循环。但是,我也无法使用我设置为测试的 postman 调用,我得到了同样的错误。
  2. 我尝试将安全属性从 [AllowAnonymous] 更改为 ** 内置安全属性的 DNN:[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]** 但是我收到以下错误而不是 500 错误:

Authorization has been denied for this request.

  1. 如果我将安全属性更改为 [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View)]
  2. ,也会出现与上述相同的错误
  3. 我确定我的 web.config 文件支持 POST 操作:

    添加名称="ExtensionlessUrl-Integrated-4.0" 路径="*。" verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"

我知道 api 端点被命中,因为如果我使用 GET 而不是 POST 我可以命中 web.pai 代码中的所有断点。以及给定的 "Authorization has been denied for this request" 是由 api 服务提供的。

问题

谁能帮我弄清楚为什么我的 DNN api 和 post 不接受请求?

好吧,难怪这是我的错。我已将 http 请求的授权过程移至新的 httpClient 拦截器。我在创建格式不正确的请求的拦截器函数中遇到错误。修复拦截器后,API 请求现在可以正常工作。

希望这可能对某人有所帮助

我知道你自己得到了答案,但这些链接可能有用:

您可以在此处找到 "scafolding angular project":DNN-Angular-6-7-CLI

以及将项目部署到哪里的 DNN 模块:SPA DNN9:DNN-9.x-SPA-and-Angular-6-7

所有 DNN 的 ASCX:DNN-7.x-8.x-9.x-and-Angular-6-7

全部适用于 dnn webapi 和安全。

我在我的客户中使用了这些项目。

马特奥