首页 > 解决方案 > ASP.NET Core MVC- localhost 当前无法处理此请求

问题描述

我有一个简单的应用程序。
Index.cshtml 页面显示了一个登录页面,该页面绑定了用户模型。每当从 Index.cshtml 页面提交登录表单时,都会调用控制器 httppost 操作方法 Login,它只是查找正确的用户名和密码,如果用户存在,它只是将用户重定向到 Login.cshtml 视图,其中包含用户列表,如图所示以下:

索引 C# 代码:

 public IActionResult Index()  //simply return the login page view
    {
        return View();
    }    

索引.cshtml

@model NewChatApp.Models.User    

<div class="wrapper fadeInDown">
<div id="formContent" class="mt-5">
    <form method="post" class="mt-5" asp-action="Login">
        <input hidden="hidden" asp-for="Id" />
        <input hidden="hidden" asp-for="Name" />
        <input type="text" class="fadeIn second" placeholder="login" asp-for="Username">
        <input type="text" class="fadeIn third" placeholder="password" asp-for="Password">
        <input type="submit" class="fadeIn fourth mt-3" value="Log In">
    </form>

</div>

登录 C# 代码:

[HttpPost]
    public IActionResult Login(User user)
    {
        UserProvider userProvider = new UserProvider();
        User user1 = userProvider.CreateUsersList().Where(x => x.Username == user.Username && x.Password == user.Password).FirstOrDefault();
        TempData["CurrentUser"] = user1;
        if (user1 == null)
        {
            ViewData.Clear();
            return View("Index");
        }
        List<User> users = userProvider.CreateUsersList().Where(x => x.Id != user1.Id).ToList();
        return View(users);
    }    

Login.cshtml 代码

@model IEnumerable<NewChatApp.Models.User>

@{
   Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="col-md-3">
<table class="table">
    <thead>
        <tr>
            <th>
                FRIENDS
            </th>
        </tr>
    </thead>
    <tbody>
        @foreach (User item in Model)
        {
            <tr>
                <td>
                    <button class="btn btn-link">@item.Name</button>
                </td>
            </tr>
        }
    </tbody>
</table>

当我调试代码时。我看到我在登录方法和登录方法中成功获取了用户模型,然后将三个用户的列表返回到登录视图。在 foreach 循环的登录视图中,当我遍历用户记录时,在 foreach 循环的第一次迭代中,它在浏览器中显示本地主机当前无法处理此请求的
错误 我在启动类中也启用了开发人员异常页面,但不会得到详细错误。

程序.cs

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

标签: c#asp.net-core-mvc

解决方案


按照弗兰克在评论中的指示查看输出窗口后,我发现问题在于将用户对象存储在 TempData 中。我删除了那条线,一切都开始工作了。
更新了登录 C# 代码:

[HttpPost]
public IActionResult Login(User user)
{
    UserProvider userProvider = new UserProvider();
    User user1 = userProvider.CreateUsersList().Where(x => x.Username == user.Username && x.Password == user.Password).FirstOrDefault();
    
    if (user1 == null)
    {
        ViewData.Clear();
        return View("Index");
    }
    List<User> users = userProvider.CreateUsersList().Where(x => x.Id != user1.Id).ToList();
    return View(users);
}    

推荐阅读