Die beiden folgenden Links zugreifen, die gleiche Aktion Methode:Wie kann ich die folgende Aktionsmethode threadsicher machen?
http://stage.bullydog.com/Products/accessories/podmount
und http://stage.sctflash.com/Products/accessories/podmount
ich Request.Url.Host
verwenden, um die Marke von Produkten bestimmen ich aus einer Datenbank zurückgeben möchten. Wenn ich zuerst auf http://stage.bullydog.com/Products/accessories/podmount
zugreife, enthält Request.Url.Host
den Wert stage.bullydog.com
, aber wenn ich dann gehe zu http://stage.sctflash.com/Products/accessories/podmount
, kann Request.Url.Host
stage.sctflash.com
enthalten oder es kann stage.bullydog.com
enthalten.
Die Aktion Methode, die aufgerufen wird, ist:
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);
}
Der Code, der die Marke erhält, ist:
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;
}
}
Wie kann ich die Request.Url.Host
enthält die richtige Host sicherzustellen, wenn das Verfahren gleiche Aktion ist Zugriff von zwei verschiedenen Hosts?
Sie können dies in Aktion sehen, wenn Sie zu http://stage.bullydog.com/Products/accessories/podmount
gehen und gehen dann zu http://stage.sctflash.com/Products/accessories/podmount
und entweder eine aktualisieren, sollte das Logo, das ändern bedeutet, dass der von Request.Url.Host
falsch war zurückgegebene Wert.
Kann GetProductBrand auch statisch sein und in diesem Fall dennoch Thread-sicher sein?
Sie sind zwei Anfragen richtig? Sie sollten also einzigartig sein. Ich sehe keine Statik oder irgendetwas, das sagt, dass es nicht threadsicher ist. – TyCobb
@TyCobb - Die 2 URLs rufen dieselbe Controller/Aktionsmethode auf. Ich kann einfach nicht herausfinden, warum eine URL die URL der anderen zurückgibt. – xaisoft