嗨,我在使用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!");
}
答案 0 :(得分:0)
似乎AspNetCore也不能很好地处理以下构造:
public async void OnGet() {
...
}
即使它已被接受并且似乎可以正常工作,但可能无法正确处理异常。
执行此操作的正确方法是:
public async Task OnGetAsync() {
....
}
不知道它是否被归类为AspNetCore错误...从这个意义上说,也许它应该像许多其他事物一样被拒绝。哦,好了……已修复错误。