Хранение данных в WEB API, чтобы его можно было использовать позже
Существует веб-сайт, для которого я пишу веб-службы, используя С# MVC WEB API, чтобы мобильное приложение могло использовать их для хранения и извлечения данных. теперь есть проблема, что в одном из методов есть значение, которое я должен использовать в другом методе. Мне нужно получить доступ к этому значению. Я прочитал ответы других относительно той же проблемы, используя сеансовую обработку, но это также не очень хороший подход. Как мне получить эту ценность? До сих пор я это делал.
public Object carYears(string Carmade, string CarModel) //not working
{
List<object> list = new List<object>();
int? manid = Convert.ToInt32(Carmade);
int? modid = Convert.ToInt32(CarModel);
var md = db.des_texts.Where(x => x.TEX_ID == modid).SingleOrDefault();
var manufac = db.manufacturers.Where(x => x.MFA_ID == manid).SingleOrDefault();
var mod = (from modl in db.models
join mn in db.manufacturers on modl.MOD_MFA_ID equals mn.MFA_ID
join cd in db.country_designations on modl.MOD_CDS_ID equals cd.CDS_ID
join dt in db.des_texts on cd.CDS_TEX_ID equals dt.TEX_ID
where (mn.MFA_ID == manid) && (cd.CDS_LNG_ID == 4) && (modl.MOD_PC == 1) && (dt.TEX_TEXT == md.TEX_TEXT)
orderby mn.MFA_BRAND, dt.TEX_TEXT
select new { modl.MOD_ID, mn.MFA_BRAND, dt.TEX_TEXT, modl.MOD_PCON_START, modl.MOD_PCON_END }).FirstOrDefault();
//TempData["modelid"] = mod.MOD_ID; <-- i need this value in another method
var session = HttpContext.Current.Session;
if (session != null)
{
if (session["modelid"] == null)
session["modelid"] = mod.MOD_ID;
}
может ли этот TempData использоваться для этой цели? Еще одна вещь, которую я сделал в сессии и сохранил значение, но все же я не могу получить доступ к этому значению в другом методе.
Вы не должны полагаться на сеанс для этого, я не думаю. Если мобильное приложение не хранит ключ аутентификации ASP.NET и передает его с каждым запросом. Для веб-сайта ASP.NET MVC это почти "из коробки", но вы не можете полагаться на сеанс для клиента мобильного приложения, независимо от того, должен ли API уважать REST или нет. Я не думаю, что веб-API и ASP.NET будут гарантировать, что будет использоваться тот же сеанс для каждого запроса одного и того же клиента мобильного приложения.
Метод carYears
может вернуть modelid
обратно в мобильное приложение, otherMethod
может потребовать modelid
в качестве параметра, а затем мобильное приложение может включать modelId
в следующий запрос к otherMethod
, подпись будет:
public returnType otherMethod(int modelId){}
В противном случае ваш otherMethod
будет только частным методом "помощника" для вызывающего, carYears
и будет иметь подпись, очевидно, нет необходимости в сеансе, поскольку вы просто передаете modelid
в carYears
otherMethod
.
private returnType otherMethod(int modelId){}
Создайте класс DTO как
public class ExampleRequest
{
public int ExId {get; set;}
...Add more types required if any
}
в первом методе
public Object carYears(string Carmade, string CarModel)
{
//previous code
ExampleRequest request = new ExampleRequest();
request.ExId = mod.MOD_ID;
otherMethod(request);
}
public bool otherMethod(ExampleRequest request) {
int modId = request.ExId;
//otherCode
return true; //or false
}
- Вопросы
- Asp.net-web-api
- Хранение данных в WEB API, чтобы его можно было использовать позже