Следва моят код на ASP.Net Web API контролер. Тук, както можете да видите, има обект от частен клас, BL, който се използва и двата метода Get са внедрени. За първия метод FetchAllDashboardByUserId(int userId) предавам потребителския идентификатор, така че BL обектът да може да бъде иницииран. В рамките на същата сесия на браузъра, ако се извика вторият метод за получаване, тогава не искам да предавам идентификатора на потребителя, тъй като BL трябва да бъде иницииран по подразбиране, но в момента това не е така. BL е null за втория метод, така че трябва да добавя userid към извикването на метода - 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
}