gpt4 book ai didi

c# - 在 Response.Redirect() 之后,代码继续执行

转载 作者:行者123 更新时间:2023-12-05 04:27:18 25 4
gpt4 key购买 nike

代码在使用 Response.Redirect() 重定向后不会停止执行,我认为它会(?)。我已经单独测试了 Response.Redirect() 方法,它有效(进行重定向)。我添加了应该结束脚本的第二个参数 true

我检查正在执行重定向的调试。代码进入 if 语句,因此它被评估为真。

public void OnGet()
{
string id = Request.Query["id"];
if (!int.TryParse(id, out int value) || value == 0) //<-- true
{

Response.Redirect("/Clients/Index", true); //This line runs
}
try //<-- the rest is carried out too
{
using (SqlConnection connection = new(connectionString))
{
connection.Open();
string sql = "SELECT * FROM clients WHERE id = @id";

using (SqlCommand command = new(sql, connection))

//etc........

响应是一个“HttpResponse”。它应该有一个“结束”方法,但我不能添加“Response.End()” 有一个错误说 “'HttpResponse' 不包含 'End' 的定义并且找不到接受类型为“HttpResponse”的第一个参数的可访问扩展方法“End””

所以代码在重定向之后继续运行,并最终遇到数据库异常。

该项目在 .net core 6.0 上——是否与它有关?

最佳答案

这看起来像一个 Razor 页面,在这种情况下注释是错误的:简单地调用 return 会将页面发送到浏览器。

相反,您应该返回一个 IActionResult,如下所示:

public IActionResult OnGet()
{
string id = Request.Query["id"];
if (!int.TryParse(id, out int value) || value == 0)
{
return new RedirectResult("/Clients/Index");
}
try
{
using (SqlConnection connection = new(connectionString))
{
connection.Open();
string sql = "SELECT * FROM clients WHERE id = @id";

using (SqlCommand command = new(sql, connection))

//etc........
return Page();
}

现在您可以重定向并结束响应或返回页面。

关于c# - 在 Response.Redirect() 之后,代码继续执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72859989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com