ดังนั้นไม่มีรายการที่นี่ทำงานให้ฉัน แต่ใช้คำตอบบางอย่างฉันได้ทำงาน:
public string GetBaseUrl()
{
var request = HttpContext.Current.Request;
var appUrl = HttpRuntime.AppDomainAppVirtualPath;
if (appUrl != "/")
appUrl = "/" + appUrl;
var baseUrl = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, appUrl);
return baseUrl;
}
อัพเดทสำหรับ ASP.NET Core / MVC 6:
ASP.NET Core
ทำให้กระบวนการนี้เจ็บปวดขึ้นอีกเล็กน้อยโดยเฉพาะอย่างยิ่งถ้าคุณอยู่ลึกเข้าไปในโค้ดของคุณ คุณมี 2 ตัวเลือกที่จะได้รับHttpContext
1) ส่งผ่านจากcontroller
:
var model = new MyClass(HttpContext);
จากนั้นในmodel
:
private HttpContext currentContext;
public MyClass(HttpContext currentContext)
{
this.currentContext = currentContext;
}
2) บางทีวิธีที่สะอาดกว่านี้คือการฉีดเข้าไปในชั้นเรียนของคุณซึ่งเริ่มต้นด้วยการลงทะเบียนประเภทในของคุณ Startup:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddTransient<MyClass, MyClass>();
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
จากนั้นให้ฉีดให้คุณดังนี้:
private HttpContext currentContext;
public MyClass(IHttpContextAccessor httpContextAccessor)
{
currentContext = httpContextAccessor.HttpContext;
}
ในกรณีใดกรณีหนึ่งนี่คือการอัปเดตสำหรับ.NET Core
GetBaseUrl()
:
public string GetBaseUrl()
{
var request = currentContext.Request;
var host = request.Host.ToUriComponent();
var pathBase = request.PathBase.ToUriComponent();
return $"{request.Scheme}://{host}{pathBase}";
}
urlHelper.Content("~")
อะไร ฉันจะสร้างคำจำกัดความได้urlHelper
อย่างไร ขอบคุณ!