#c# #asp.net #asp.net-mvc-4 #asp.net-mvc-routing
#c# #asp.net #asp.net-mvc-4 #asp.net-mvc-routing
Вопрос:
Я пытаюсь перейти к этому URL-адресу в своем браузере:
http://localhost:41359/account/login
Вот мои маршруты из моего RouteConfig.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace CTHRC.Roti.Web.UI
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Account",
url: "account/{action}/{id}",
defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
но когда я пытаюсь перейти по этому URL-адресу в своем браузере, я получаю эту ошибку:
{"Message":No HTTP resource was found that matches the request URI 'http://localhost:41359/account'.","MessageDetail":"No type was found that matches the controller named 'account'."}
Здесь все кажется правильным, но я все еще получаю эту ошибку. Вот мой AccountController:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebMatrix.WebData;
using CTHRC.Roti.Domain.Api.Services;
namespace CTHRC.Roti.Web.UI.Controllers
{
public class AccountController : Controller
{
[HttpGet]
public ActionResult Login()
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("ModelContext", "Users", "Id", "UserName", autoCreateTables: true);
}
return View();
}
[HttpPost]
public ActionResult Login(FormCollection form)
{
bool success = WebSecurity.Login(form["username"], form["password"], false);
if (success)
{
string returnUrl = Request.QueryString["ReturnUrl"];
if (returnUrl == null)
{
Response.Redirect("/home/index?userID=" WebSecurity.CurrentUserId);
}
else
{
Response.Redirect(returnUrl);
}
}
return View();
}
[HttpGet]
public ActionResult Register()
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("UserDb", "Users", "Id", "UserName", autoCreateTables: true);
}
return View();
}
[HttpPost]
public ActionResult Register(FormCollection form)
{
WebSecurity.CreateUserAndAccount(form["username"], form["password"], new { Email = form["email"], Language = form["language"] });
Response.Redirect("/account/login");
return View();
}
public ActionResult Logout()
{
WebSecurity.Logout();
Response.Redirect("/account/login");
return View();
}
}
}
Я уже несколько дней борюсь с этой проблемой, я очистил свое решение, перестроил свое решение и создал свое решение, и я все еще получаю эту ошибку. Если кто-нибудь может мне помочь, я был бы очень признателен. Заранее спасибо.
Комментарии:
1. Что произойдет, если вы поместите свой
Default
маршрут после своегоAccount
маршрута?2. Мой маршрут по умолчанию после маршрута моей учетной записи, не имеет значения, в каком порядке, я получаю ту же ошибку, когда я goto:
http://localhost:41359/account/login
3. Согласно сообщению об ошибке, кажется, что вы не передаете имя действия в URL.
4. Еще одна вещь, если у вас есть два проекта или области в вашем приложении, вам также необходимо включить имя сборки в маршрут, чтобы MVC мог найти правильный контроллер. И убедитесь, что ваш контроллер находится в правильном каталоге .. он не должен быть в контроллере Web API для сопоставления этого URL