处理剃刀页面异常

时间:2018-10-31 11:31:47

标签: asp.net-core exception-handling crash razor-pages

嗨,我在使用Razor Pages的AspNetCore 2.1应用程序中遇到了奇怪的行为。当异常从OnGet之类的Razor Page操作中逸出时,应用程序崩溃。异常永远不会到达任何中间件。看来应用程序似乎在内部PageActionInvoker.Next方法的某个地方崩溃了。

我不能将代码粘贴得太多。但是以下内容会使应用程序崩溃:

import pandas as pd
import numpy as np

df = pd.DataFrame({"id": [0,1,2,3,4,5], "linkid": [-1,3,-1,0,5,-1], "value": [10, 20, 30, 20, 40, 50]})
df['value_link'] = df.linkid.apply(lambda x: df[df['id'] == x].value.values[0] if x != -1 else np.nan)

matched = df[df.value == df.value_link]

注意:

我们是:

  • 结合视图和剃须刀页面。视图是应用程序“较旧”部分的一部分。
  • 我们允许“剃刀页面”区域。

我们必须配置一些功能吗?

我们错过了什么吗?有人有建议吗?

发现它 没什么特别的。好了,AspNetCore接受 async void OnGet ,并且一切正常,直到引发异常为止。

使用以下内容对其进行修复。

public async void OnGet() {
    await Task.CompletedTask; // normally we await something else
    throw new Exception("Boom!");
}

1 个答案:

答案 0 :(得分:0)

似乎AspNetCore也不能很好地处理以下构造:

public async void OnGet() {
...
}

即使它已被接受并且似乎可以正常工作,但可能无法正确处理异常。

执行此操作的正确方法是:

public async Task OnGetAsync() {
....
}

不知道它是否被归类为AspNetCore错误...从这个意义上说,也许它应该像许多其他事物一样被拒绝。哦,好了……已修复错误。