在ASP.NET MVC中,当使用OAuth进行登录时,可能会遇到在回调URL中包含“#=”时登录停止工作的问题。这个问题通常是由于浏览器URL处理的原因引起的。下面是一种解决方法的示例代码。
在登录控制器的回调动作中,可以通过重定向到另一个URL来解决这个问题。可以创建一个新的回调动作,该动作负责处理登录成功后的重定向。
public class AccountController : Controller
{
// 登录回调动作
public async Task ExternalLoginCallback(string returnUrl)
{
// 处理登录逻辑
// 重定向到新的回调动作
return RedirectToAction("ExternalLoginCallbackFix", new { returnUrl = returnUrl });
}
// 新的回调动作
public async Task ExternalLoginCallbackFix(string returnUrl)
{
// 进行进一步的处理
return Redirect(returnUrl);
}
}
在上面的代码中,我们在ExternalLoginCallback动作中使用RedirectToAction来重定向到ExternalLoginCallbackFix动作。然后,在ExternalLoginCallbackFix动作中,我们直接将重定向URL返回给浏览器。
这种方法可以解决在回调URL中包含“#=”时登录停止工作的问题。