Ниже приведен мой код контроллера веб-API ASP.Net. Здесь, как вы можете видеть, используется объект частного класса, BL, и реализованы оба метода Get. Для первого метода FetchAllDashboardByUserId (int userId) я передаю идентификатор пользователя, чтобы можно было инициировать объект BL. В том же сеансе браузера, если вызывается второй метод get, я не хочу передавать идентификатор пользователя, поскольку BL должен быть инициирован по умолчанию, но в настоящее время это не так. BL для второго метода имеет значение null, поэтому мне нужно добавить идентификатор пользователя к вызову метода - GetCardDataUI (int userId, int dashBoardID, int cardID). У меня вопрос, как этого избежать. Я ошибаюсь в том, что:
Один открытый браузер, в котором я выполняю последовательный вызов следующих URL-адресов, представляет собой один сеанс:
webapi / ViewR? userId = 1
webapi / ViewR? userId = 1 & dashBoardID = 1 & cardID = 3
Я не хочу передавать userId во втором URL-адресе. Обратите внимание, что если я объявляю объект класса статическим, он работает так, как ожидалось, но это не то, что я хочу, он должен быть привязан к пользователю:
public class ViewRController : ApiController
{
// BL object for a user
private static BL accessBL = null;
// HTTP GET for Webapi/ViewR (Webapi - name of API, ViewR - Controller with implementation)
[AcceptVerbs("Get")]
public List<DashboardUI> FetchAllDashboardByUserId(int userId)
{
if (accessBL == null)
accessBL = new BL(userId);
// Use BL object for entity processing
}
[AcceptVerbs("Get")]
public CardDataGetUI GetCardDataUI(int userId, int dashBoardID, int cardID)
{
if (accessBL == null)
accessBL = new BL(userId);
// Use BL object for entity processing
}
}
Как я хочу, чтобы реализация второго метода была:
[AcceptVerbs("Get")]
public CardDataGetUI GetCardDataUI(int dashBoardID, int cardID)
{
// Use BL class object created in last call for entity processing
// Should not pass userid again
}