【发布时间】: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 端点正在接受请求。
我尝试了什么:
- 我尝试通过使用邮递员调用将 angular 排除在循环之外。但是,我也不能使用我设置的邮递员电话作为测试,我得到了同样的错误。
- 我尝试将安全属性从 [AllowAnonymous] 更改为 ** 一个 DNN 内置安全属性:[DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]** 但我收到以下错误而不是500 错误:
此请求的授权已被拒绝。
- 如果我将安全属性更改为 [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.View)],则会出现与上述相同的错误
-
我确保我的 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