【发布时间】:2021-01-24 15:23:07
【问题描述】:
在我的 UserController 中,我发出:
return RedirectToAction("SignOut", "SignIn");
但得到:
“/”应用程序中的服务器错误。
找不到资源。 描述:HTTP 404。您正在寻找的资源(或其依赖项之一)可能是 已删除、更改名称或暂时不可用。请查看以下 URL 和 确保拼写正确。
请求的 URL:/SignIn/SignOut
SignInController 动作方法:
[HttpPost]
public ActionResult SignOut()
{
// Setting cache.
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
Response.Cache.SetNoStore();
// Setting cookies.
// Instantiate a Cookie.
HttpCookie Cookies = new HttpCookie("Gbng");
Cookies.Value = "";
Cookies.Expires = DateTime.Now.AddHours(-1);
Response.Cookies.Add(Cookies);
HttpContext.Session.Clear();
Session.Abandon();
// Redirect to the Home controller.
return RedirectToAction("Index", "Home");
}
我有一个引用相同操作方法但具有 POST 方法的部分视图:
@if ( (string)@Session["IsAuthenticated"] == "true" )
{
using (Html.BeginForm("SignOut", "SignIn", FormMethod.Post, new { id =
"signoffForm", @class = "navbar-right" }))
{
@Html.AntiForgeryToken()
<ul class="nav navbar-nav navbar-right">
<li>
<a
href="javascript:document.getElementById('signoffForm').submit()">Sign
out</a>
</li>
</ul>
}
}
else
{
<ul class="nav navbar-nav navbar-right">
<li>@Html.ActionLink("Register", "Register", "Register",
routeValues: null, htmlAttributes: new { id = "registerLink" })</li>
<li>@Html.ActionLink("Sign in", "SignIn", "SignIn", routeValues:
null, htmlAttributes: new { id = "signLink" })</li>
</ul>
}
【问题讨论】:
-
我删除了 [HttpPost] 并将其替换为 [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]。现在它找到了。我可以组合请求方法属性,因为此操作服务于来自多个动词的请求。
标签: asp.net-mvc