Я использую .NETCore 2.1, Entity Framework и страницы Razor для создания системы управления игрой.
У меня есть контроллер в пространстве имен Microsoft.AspNetCore.Mvc, который подключается и получает данные из API третьей части.
В контроллере есть несколько различных методов, которые возвращают разные вещи, но все они имеют общий общий код:
public static GameSystemManager.LoginInfo gamerManagerLogin = new GameSystemManager.LoginInfo()
{
UserKey = "myAPIkey",
Password = "xyzxyz"
};
public static GameSystemManager.GamerLister gamerLists = new GameSystemManager.GamerLister
{
MaxNumberResults = 15,
PageNumber = 0
};
Таким образом, один метод контроллера может выглядеть так:
public IActionResult GetAllGames(Guid Id)
{
public static GameSystemManager.LoginInfo gamerManagerLogin = new GameSystemManager.LoginInfo()
{
UserKey = "myAPIkey",
Password = "xyzxyz"
};
public static GameSystemManager.GamerLister gamerLists = new GameSystemManager.GamerLister
{
MaxNumberResults = 15,
PageNumber = 0
};
response = GameSystemManager.ListGames(gamerManagerLogin, gamerLists, Id);
return View(response.Results);
}
Поскольку несколько контроллеров и методов используют один и тот же код, я решил создать базовый контроллер и поместить туда этот код, а другие контроллеры наследовать от него.
Вот мой BaseController:
public class BaseController : Controller
{
public static GameSystemManager.LoginInfo gamerManagerLogin = new GameSystemManager.LoginInfo()
{
UserKey = "myAPIkey",
Password = "xyzxyz"
};
public static GameSystemManager.GamerLister gamerLists = new GameSystemManager.GamerLister
{
MaxNumberResults = 15,
PageNumber = 0
};
}
А вот как я это использую:
public class GameListController : BaseController
{
public IActionResult GetAllGames(Guid Id)
{
response = GameSystemManager.ListGames(gamerManagerLogin, gamerLists, Id);
return View(response.Results);
}
}
Вот мой appsettings.json:
"GamerManager": {
"UserKey": "myAPIkey",
"Password": "xyzxyz"
},
Вот мой класс GamerManagerConfig:
public class GamerManagerConfig
{
readonly string UserKey = "myAPIkey";
readonly string Password = "xyzxyz";
}
Однако это не работает. Я просто получаю ошибку тайм-аута от API. Это только работает, когда у меня есть код непосредственно в методе контроллера, как мой пример выше.
Я думаю, что это как-то связано с инициализацией. Может быть, его нужно инициализировать прямо в методе? Я не уверен.
Любое понимание будет с благодарностью!
Спасибо!