Web API POST使用AllowAnonymous请求返回500错误

时间:2018-11-17 22:15:40

标签: asp.net .net angular dotnetnuke

我在本地服务器上建立了 DNN 9.2 网站。我使用HttpPOST将JSON发送到web.api。上周该工作正常,但是当我尝试从 Angular 4.1升级到4.3 时,该工作已停止。

当我尝试从我的应用程序或邮递员访问中访问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. 我试图通过使用邮递员电话来消除棱角。但是,我也无法使用已设置为测试的邮递员呼叫,并且遇到相同的错误。
  2. 我尝试将安全属性从 [AllowAnonymous] 更改为**内置安全属性的DNN:[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)] **,但出现以下错误,而不是500错误:
  

此请求的授权已被拒绝。

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

    add name =“ ExtensionlessUrl-Integrated-4.0” path =“ *。” verb =“ GET,HEAD,POST,DEBUG,PUT,DELETE” type =“ System.Web.Handlers.TransferRequestHandler” preCondition =“ integratedMode,runtimeVersionv4.0”

我知道api端点受到了攻击,因为如果我使用GET而不是POST,则可以在web.pai代码中命中所有断点。 api服务还给出了给定的“对此请求已拒绝授权”。

问题

有人可以帮我弄清楚为什么我的DNN api with post不接受请求吗?

2 个答案:

答案 0 :(得分:1)

我知道您一个人就能得到答案,但是这些链接可能对您有用:

您可以在这里找到“角形投影”: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和安全性配合使用。

我与客户一起使用了这些项目。

Matteo

答案 1 :(得分:0)

好的,所以这是我的错就不足为奇了。我已经将http请求的授权过程移至新的httpClient拦截器。我在拦截器函数中出错,该错误正在创建格式不正确的请求。修复拦截器后,API请求现在可以正常工作。

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