Нет никакого "обратного вызова" в C - не больше, чем какая-либо другая универсальная концепция программирования.
Они реализованы с помощью указателей функции. Вот пример:
void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{
for (size_t i=0; i<arraySize; i++)
array[i] = getNextValue();
}
int getNextRandomValue(void)
{
return rand();
}
int main(void)
{
int myarray[10];
populate_array(myarray, 10, getNextRandomValue);
...
}
Здесь, populate_array
функция берет указатель функции в качестве своего третьего параметра и называет его, чтобы заставить значения заполнять массив с. Мы записали обратный вызов getNextRandomValue
, который возвращает значение случайного выхода и передал указатель на него к populate_array
. populate_array
назовет наши времена функции обратного вызова 10 и присвоит возвращенные значения элементам в данном массиве.
HttpContext.Current.Request.Url может помочь вам информация об URL-адресе. И может разбивать URL на фрагменты.
Пример C # ниже:
string scheme = "http://";
string rootUrl = default(string);
if (Request.ServerVariables["HTTPS"].ToString().ToLower() == "on")
{
scheme = "https://";
}
rootUrl = scheme + Request.ServerVariables["SERVER_NAME"].ToString();
string hostUrl = Request.Url.Scheme + "://" + Request.Url.Host; //should be "http://hostnamehere.com"
Чтобы получить всю строку URL-адреса запроса:
HttpContext.Current.Request.Url
Чтобы получить часть запроса www.foo.com:
HttpContext.Current.Request.Url.Host
Обратите внимание, что вы в некоторой степени зависите от факторы вне вашего приложения ASP.NET. Если IIS настроен на прием нескольких или любых заголовков хоста для вашего приложения, то любой из тех доменов, которые разрешены для вашего приложения через DNS, может отображаться как URL-адрес запроса, в зависимости от того, какой из них ввел пользователь.
For anyone still wondering, a more complete answer is available at http://devio.wordpress.com/2009/10/19/get-absolut-url-of-asp-net-application/.
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;
}
}
string baseUrl = Request.Url.GetLeftPart(UriPartial.Authority);
Метод GetLeftPart возвращает строку, содержащую крайнюю левую часть URI строка, заканчивающаяся частью, указанной параметром part.
Схема и сегменты полномочий URI.