Следующие две ссылки доступ к тому же методу действия:Как я могу сделать следующий метод действий потоком безопасным?
http://stage.bullydog.com/Products/accessories/podmount
и http://stage.sctflash.com/Products/accessories/podmount
я использую Request.Url.Host
, чтобы определить марку продуктов, которые я хочу, чтобы вернуться из базы данных. Когда я сначала получаю http://stage.bullydog.com/Products/accessories/podmount
, Request.Url.Host
содержит значение stage.bullydog.com
, но если я затем перейду к http://stage.sctflash.com/Products/accessories/podmount
, Request.Url.Host
может содержать stage.sctflash.com
или может содержать stage.bullydog.com
.
метод действия, который называется это:
public ActionResult GetAccessoriesByType(RenderModel model, string id)
{
Common _common = new Common();
string brand = Request.Url != null ? _common.GetProductBrand() : BrandType.SCT;
var productSearchResultsModel = new ProductSearchResultsModel
{
Accessories = _accessoryRepository.GetAccessoriesByType(id, brand)
};
return View("~/Views/accessories.cshtml", productSearchResultsModel);
}
код, который получает бренд:
public class Common
{
public string GetProductBrand()
{
var host = HttpContext.Current.Request.Url.Host;
if (host.Contains("sctflash"))
return BrandType.SCT;
if (host.Contains("bigrig") || host.Contains("bigrigs"))
return BrandType.BigRig;
if (host.Contains("bullydog"))
return BrandType.BullyDog;
return BrandType.SCT;
}
}
Как я могу гарантировать, что Request.Url.Host
содержит надлежащего хозяина, когда метод же действия доступ с двух разных хостов?
Вы можете увидеть это в действии, если вы идете в http://stage.bullydog.com/Products/accessories/podmount
, а затем перейти к http://stage.sctflash.com/Products/accessories/podmount
и обновить либо один, логотип должны изменить это означает, что значение, возвращаемое Request.Url.Host
неверно.
Кроме того, может ли GetProductBrand быть статическим и по-прежнему быть потокобезопасным в этом случае?
Это два запроса, верно? Поэтому они должны быть уникальными. Я не вижу никакой статики или чего-либо, что говорит, что это не потокобезопасно. – TyCobb
@TyCobb - 2 URL-адреса называют один и тот же контроллер/метод действий. Я просто не могу понять, почему один URL-адрес возвращает URL-адрес другого. – xaisoft