Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Areas не находит путь к своему Views / 3 сообщений из 3, страница 1 из 1
14.02.2017, 01:30
    #39403848
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Areas не находит путь к своему Views
Привет!
в проекте создал область для обработки авторизации.
в конфиге указал куда смотреть, если не авторизирован:
<authentication mode="Forms">
<forms timeout="30" loginUrl="~/Authorize/Account/Login" />
</authentication>
но при перенаправлении на страницу авторизации, конроллер не видит своего представления, только если я пропишу его явно:
Код: c#
1.
2.
3.
4.
public ActionResult Login()
{
      return View("~/Areas/Authorize/Views/Account/Login.cshtml");
}



без указания строчки, представление ищется в корне:

The view 'Login' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Account/Login.aspx
~/Views/Account/Login.ascx
~/Views/Shared/Login.aspx
~/Views/Shared/Login.ascx
~/Views/Account/Login.cshtml
~/Views/Account/Login.vbhtml
~/Views/Shared/Login.cshtml
~/Views/Shared/Login.vbhtml
...
Рейтинг: 0 / 0
14.02.2017, 07:43
    #39403869
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Areas не находит путь к своему Views
WitC,

покажи содержание AuthorizeAreaRegistration.cs
и покажи содержание Global.asax.cs
...
Рейтинг: 0 / 0
14.02.2017, 09:37
    #39403906
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Areas не находит путь к своему Views
hVostt, привет.
AuthorizeAreaRegistration:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
using System.Web.Mvc;

namespace WebParseConnector.Areas.Authorize
{
    public class AuthorizeAreaRegistration : AreaRegistration 
    {
        public override string AreaName 
        {
            get 
            {
                return "Authorize";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context) 
        {
            context.MapRoute(
                "Authorize_default",
                "Authorize/{controller}/{action}/{id}",
                new { action = "Login", id = UrlParameter.Optional },
                new[] { "WebParseConnector.Areas.Authorize.Controllers" }
            );
        }
    }
}




Global.asax.cs:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace WebParseConnector
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
        }
    }
}



тут и ситуация следующая.
для управлением авторизацией и ролями использую WebMatrix.WebData.SimpleMembershipProvider и WebMatrix.WebData.SimpleRoleProvider соответственно.
когда я добавил в референсис WebMatrix, вылезло сообщение, что надо обновить ... WebPages ... после обновления перестало находить путь к представлению в области.
при чём, если я формирую ссылку на странице - она работает:
Код: plaintext
1.
@Html.ActionLink("Logon", "Login", new { Area = "Authorize", Controller = "Account" })


и в адресной строке отражается путь вместе с областью:
http://localhost:50259/Authorize/Account

а когда я запрещаю доступ без авторизации к Home/Index
то путь для перехода на страницу авторизации прописывается без области, хотя в Web.config прописано полностью:
Код: xml
1.
2.
3.
<authentication mode="Forms">
      <forms timeout="30" loginUrl="~/Authorize/Account/Login" />
</authentication>


а пытается перейти так, как на скрине ниже (см. адресную строку). и если представление
~\Authorize\Views\Account\Login.cshtml
скопировать в основной проект (без области)
~\Views\Account\Login.cshtml
то всё находится и работает... или если путь к представлению прописать полностью в контроллер.действие, тоже всё работает:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
using System.Web.Mvc;

namespace WebParseConnector.Areas.Authorize.Controllers
{
    public class AccountController : Controller
    {
        // GET: Authorize/Account
        public ActionResult Login()
        {
            return View("~/Areas/Authorize/Views/Account/Login.cshtml");
        }
    }
}


вот так выглядит ошибка:
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Areas не находит путь к своему Views / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]