Вызвать действие контроллера в MVC, минуя представление - PullRequest
0 голосов
/ 23 октября 2018

Я использую приложение MVC (https://github.com/microsoftgraph/aspnet-webhooks-rest-sample), где пользователь входит в свою учетную запись Microsoft и создает подписку на веб-крючок Graph для отслеживания сообщений электронной почты. Приложение работает нормально, но я его интегрируюв более крупное приложение, в котором пользователь не будет входить в систему, а должен будет подписаться на веб-крючок Graph при запуске приложения.

Мой вопрос такой: в настоящее время пользователь нажимаетна «вход», который вызывает действие контроллера SignIn (). Как я могу вызвать часть входа контроллера действия контроллера, не проходя через представление?

Соответствующие части кода ниже:

Login.cshtml

<li class="nav-item">
        @Html.ActionLink("Sign In", "SignIn", "Account", new { area = "" }, new { @class = "nav-link" })
</li>

AccountController.cs

[HttpGet]
public void SignIn()
{
    if (HttpContext.User == null || !HttpContext.User.Identity.IsAuthenticated)
    {
         HttpContext.GetOwinContext().Authentication.Challenge(
             new AuthenticationProperties { RedirectUri = "/" },
                OpenIdConnectAuthenticationDefaults.AuthenticationType);
    }
}

Я попытался вызвать контроллер из Global.asax.cs и из автозагрузки.cs (как уже упоминалось здесь , здесь и здесь ). Однако приложение завершается ошибкой из-за того, что HttpContext имеет значение null. Я попытался обойти это, добавив следующеекод в AccountController.cs и вызов его из Startup.cs, но приложение по-прежнему не работает.Как я могу вызвать SignIn () с действительным HttpContext и без нажатия какой-либо кнопки пользователем?

public void Triage()
{
    AccountController acntController = new AccountController();
    acntController.ControllerContext = new ControllerContext(
        this.ControllerContext.RequestContext,
            acntController
    );
    acntController.SignIn();
}

EDIT 1: После опробования различных подходов, я чувствую, что упомянутый выше можетне быть правым.Я отправлю другой вопрос.Если что-то изменится, я отредактирую вопрос.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...