【问题标题】:web api POST returns 500 error with AllowAnonymous Requestsweb api POST 使用 AllowAnonymous Requests 返回 500 错误
【发布时间】:2018-11-17 22:15:40
【问题描述】:

我在本地服务器上设置了一个 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. 我尝试通过使用邮递员调用将 angular 排除在循环之外。但是,我也不能使用我设置的邮递员电话作为测试,我得到了同样的错误。
  2. 我尝试将安全属性从 [AllowAnonymous] 更改为 ** 一个 DNN 内置安全属性:[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]** 但我收到以下错误而不是500 错误:

此请求的授权已被拒绝。

  1. 如果我将安全属性更改为 [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View)],则会出现与上述相同的错误
  2. 我确保我的 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 代码中命中所有断点。以及给定的“此请求的授权已被拒绝”是从 api 服务给出的。

问题

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

【问题讨论】:

  • Angular 是一个前端框架,它与后端的 API 无关。您是否有版本控制来跟踪其他更改?
  • @wannadream 感谢您的反馈。我已经查看了版本控制,但似乎找不到问题。我知道 angular 是一个前端框架,但是像大多数前端框架一样,它们需要生成授权令牌等,这确实会影响后端 API 的响应,并且在升级 angular 之后出现问题,我没有改变服务器端代码。

标签: asp.net .net angular dotnetnuke


【解决方案1】:

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

您可以在此处找到“脚手架 Angular 项目”: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,看起来是个很棒的项目,我会试一试
【解决方案2】:

好吧,我的错也就不足为奇了。我已将 http 请求的授权过程移至新的 httpClient 拦截器。我在创建格式不正确的请求的拦截器函数中遇到错误。一旦我修复了拦截器,API 请求现在就可以正常工作了。

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

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 2022-07-04
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多