Diyelim ki http://www.foobar.com adresinde bir web sitesi barındırıyorum .
Arkamdaki kodumda " http://www.foobar.com/ " ı programlı olarak saptayabilmemin bir yolu var mı (yani, web yapılandırmamda kodlamak zorunda kalmadan)?
Diyelim ki http://www.foobar.com adresinde bir web sitesi barındırıyorum .
Arkamdaki kodumda " http://www.foobar.com/ " ı programlı olarak saptayabilmemin bir yolu var mı (yani, web yapılandırmamda kodlamak zorunda kalmadan)?
Yanıtlar:
HttpContext.Current.Request.Url size URL ile ilgili tüm bilgileri alabilir. Ve url'yi parçalara ayırabilir.
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
GetLeftPart yöntemi, URI dizesinin en soldaki bölümünü içeren ve parça tarafından belirtilen bölümle biten bir dize döndürür.
URI'nin şeması ve yetki bölümleri.
Hâlâ merak eden herkes için, daha eksiksiz bir cevap http://devio.wordpress.com/2009/10/19/get-absolut-url-of-asp-net-application/ adresinde mevcuttur .
public string FullyQualifiedApplicationPath
{
get
{
//Return variable declaration
var appPath = string.Empty;
//Getting the current context of HTTP request
var context = HttpContext.Current;
//Checking the current context content
if (context != null)
{
//Formatting the fully qualified website url/name
appPath = string.Format("{0}://{1}{2}{3}",
context.Request.Url.Scheme,
context.Request.Url.Host,
context.Request.Url.Port == 80
? string.Empty
: ":" + context.Request.Url.Port,
context.Request.ApplicationPath);
}
if (!appPath.EndsWith("/"))
appPath += "/";
return appPath;
}
}
context.Request.Url.Port == 80
tarafından (context.Request.Url.Port == 80 && context.Request.Url.Scheme == "http") || (context.Request.Url.Port == 443 && context.Request.Url.Scheme == "https")
veya kullanım cevap aşağıda
Örnek URL http://www.foobar.com/Page1 ise
HttpContext.Current.Request.Url; //returns "http://www.foobar.com/Page1"
HttpContext.Current.Request.Url.Host; //returns "www.foobar.com"
HttpContext.Current.Request.Url.Scheme; //returns "http/https"
HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority); //returns "http://www.foobar.com"
.Host
ait "http://www.foobar.com/Page1"
olduğunu www.foobar.com
, değil foobar.com
.
İstek URL dizesinin tamamını almak için:
HttpContext.Current.Request.Url
İsteğin www.foo.com kısmını almak için:
HttpContext.Current.Request.Url.Host
ASP.NET uygulamanızın dışındaki faktörlerin insafına bir dereceye kadar bağlı olduğunuzu unutmayın. IIS, uygulamanız için birden çok veya herhangi bir ana bilgisayar üstbilgisini kabul edecek şekilde yapılandırılmışsa, DNS aracılığıyla uygulamanıza çözümlenen etki alanlarından herhangi biri, kullanıcının girdiği URL'ye bağlı olarak İstek URL'si olarak görünebilir.
Match match = Regex.Match(host, "([^.]+\\.[^.]{1,3}(\\.[^.]{1,3})?)$");
string domain = match.Groups[1].Success ? match.Groups[1].Value : null;
host.com => host.com'a
dön s.host.com => host.com'a dön
host.co.uk => host.co.uk'ye dön
www.host.co.uk => host.co.uk'ye geri dön
s1.www.host.co.uk => host.co.uk'ye dön
Bunun daha eski olduğunu biliyorum ama bunu şimdi yapmanın doğru yolu
string Domain = HttpContext.Current.Request.Url.Authority
Bu, bir sunucu için port ile DNS veya ip adresini alacaktır.
Bu aynı zamanda çalışır:
string url = HttpContext.Request.Url.Authority;
C # Aşağıdaki Örnek:
string scheme = "http://";
string rootUrl = default(string);
if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on")
{
scheme = "https://";
}
rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString();
string host = Request.Url.Host;
Regex domainReg = new Regex("([^.]+\\.[^.]+)$");
HttpCookie cookie = new HttpCookie(cookieName, "true");
if (domainReg.IsMatch(host))
{
cookieDomain = domainReg.Match(host).Groups[1].Value;
}
Request
nesneye bakmayı deneyebilirsiniz .