ElenaRez Ответов: 1

Как решить проблему в поиске вида


Привет. Я внедряю asp.net основной проект и я хочу подключить свое веб-приложение к active directory через Ldap. Для этого я реализовал некоторый код, подобный следующему, однако есть ошибка "необработанное исключение произошло при обработке запроса.
InvalidOperationException: представление "логин" не было найдено. Были проведены обыски в следующих местах:
/Просмотры/учетная запись/Login.cshtml
/Views/Shared/Login.cshtml".

В то время как другие мои взгляды, связанные с другими контроллерами, работают правильно.
Я ценю, если кто-нибудь может предложить мне решение, чтобы исправить эту ошибку

Что я уже пробовал:

namespace MyDashboard.Controllers
{
    public class AccountController : Controller
{
    private readonly IAuthenticationService _authenticationService;

    public AccountController(IAuthenticationService authenticationService)
    {
        _authenticationService = authenticationService;
    }
    public IActionResult Login()
    {
        return View();
    }
    [HttpPost]
    public async Task<IActionResult> Login(LoginModel model)
    {
        var result = _authenticationService.ValidateUser("tehran.iri",model.UserName, model.Password);
        if (result)
        {
            var claims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, model.UserName),
                new Claim(ClaimTypes.Role, "Administrator"),
            };

            var claimsIdentity = new ClaimsIdentity(
                claims, CookieAuthenticationDefaults.AuthenticationScheme);

            var authProperties = new AuthenticationProperties
            {
                //AllowRefresh = <bool>,
                // Refreshing the authentication session should be allowed.

                //ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(10),
                // The time at which the authentication ticket expires. A 
                // value set here overrides the ExpireTimeSpan option of 
                // CookieAuthenticationOptions set with AddCookie.

                //IsPersistent = true,
                // Whether the authentication session is persisted across 
                // multiple requests. When used with cookies, controls
                // whether the cookie's lifetime is absolute (matching the
                // lifetime of the authentication ticket) or session-based.

                //IssuedUtc = <DateTimeOffset>,
                // The time at which the authentication ticket was issued.

                //RedirectUri = <string>
                // The full path or absolute URI to be used as an http 
                // redirect response value.
            };
            await HttpContext.SignInAsync(
                    CookieAuthenticationDefaults.AuthenticationScheme,
                    new ClaimsPrincipal(claimsIdentity),
                    authProperties);
        }
        return Ok();
    }
    public IActionResult Index()
    {
        var user = HttpContext.User.Identity.Name;
        return View();
    }

       
    }

}


А вот и мой логин.cshtml

@model MyDashboard.Models.LoginModel
@{
    ViewData["Title"] = "Login";
}


<div class="row">
    <div class="hidden-xs-down col"></div>
    <div class="col">
        <div class="card" style="margin: 20px 0;">
            <div class="card-header">
                Login
            </div>
            <div class="card-body">
                <h4 class="card-title"></h4>
                @{
                    var errorMessage = this.TempData["ErrorMessage"]?.ToString();

                    if (!string.IsNullOrEmpty(errorMessage))
                    {
                        <div class="alert alert-danger">
                            Oops! @errorMessage
                        </div>
                    }
                }
                <form asp-route-returnurl="@this.ViewData["ReturnUrl"]" method="post">
                    <span class="card-text">Use an LDAP account to sign in.</span>
                    <hr />
                    <div asp-validation-summary="All" class="text-danger"></div>
                    <div class="form-group">
                        <div class="input-group">
                            <span class="input-group-prepend">
                                <span class="input-group-text">
                                    
                                </span>
                            </span>
                            <input asp-for="UserName" placeholder="Username *" class="form-control" />
                        </div>
                        <span asp-validation-for="UserName" class="text-danger"></span>
                    </div>
                    <div class="form-group">
                        <div class="input-group">
                            <span class="input-group-prepend">
                                <span class="input-group-text">
                                    
                                </span>
                            </span>
                            <input asp-for="Password" placeholder="Password *" class="form-control" />
                        </div>
                        <span asp-validation-for="Password" class="text-danger"></span>
                    </div>
                    <div class="form-group">
                        <div class="checkbox">
                            <label asp-for="RememberMe">
                                <input asp-for="RememberMe" />
                                @Html.DisplayNameFor(m => m.RememberMe)
                            </label>
                        </div>
                    </div>
                    <div class="form-group">
                        <button type="submit" class="btn btn-primary">Signin</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
    <div class="hidden-xs-down col"></div>
</div>

@section Scripts {
    @await Html.PartialAsync("_ValidationScriptsPartial")
}


public class LoginModel
    {
        public string UserName { get; set; }
        public string Password { get; set; }
    }

ZurdoDev

Каков путь к вашему login.cshtml?

1 Ответов

Рейтинг:
4

F-ES Sitecore

Если ваш вид находится не в перечисленных местах вам нужно будет точно указать где он находится;

public IActionResult Login()
{
    return View("~/path/to/your/login.cshtml");
}