그래서 여기에 나열된 것들 중 어느 것도 나를 위해 일하지 않았지만 몇 가지 답변을 사용하면 뭔가 효과가 있습니다.
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
특히 코드가 깊다면이 과정을 조금 더 고통스럽게 만듭니다. 당신이 얻을 수있는 두 가지 옵션이 있습니다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("~")
? define을 어떻게 만듭니urlHelper
까? 감사!