Нет возможности (известной или задокументированной - доступной для общественности) изменить имя аспессионида (классический asp).
Вы можете отключить сеанс (ASP -> СессияСвойства -> Включить состояние сеанса: false) из IIS или с помощью директивы @ENABLESESSIONSTATE и переходите к собственным cookie-файлам из asp (а не JavaScript).Но это нормально, только если вам не нужен объект сеанса в вашем приложении.
Лучше всего изменить эти «строки» в файлах журналов с помощью Regex (версия asp уже представлена Энтони У Джонсом)или .net (минимально упрощенный пример C #):
Regex rx = new Regex("ASPSESSIONID[A-Z]+=");
string log = rx.Replace(File.ReadAllText("u_ex120618.log"), "ASPSESSIONID=");
Console.WriteLine(log);
Подробнее об aspx и IIS
Один из вариантов - использовать обработчик для удаления заголовков.
public class RemoveHttpHeadersModule : IHttpModule
{
public RemoveHttpHeadersModule()
{
}
public void Dispose()
{
}
public void Init(HttpApplication context)
{
if (context != null)
context.PreSendRequestHeaders += this.OnPreSendRequestHeaders;
}
[SuppressMessage("Microsoft.Portability", "CA1903:UseOnlyApiFromTargetedFramework", MessageId = "System.Web.HttpResponse.#get_Headers()")]
private void OnPreSendRequestHeaders(object sender, EventArgs e)
{
try
{
HttpContext.Current.Response.Headers.Remove("ETag");
HttpContext.Current.Response.Headers.Remove("Server");
HttpContext.Current.Response.Headers.Add("Server", "my server");
}
catch (HttpException)
{
throw;
}
}
}
Другим вариантом является контроль всего в global.asax (код или скомпилированная библиотека) - в том случае, если у вас нет доступа к диспетчеру IIS.
Удалить (и / или добавить)Заголовки:
protected internal void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpContext.Current.Response.Headers.Remove("X-AspNet-Version");
HttpContext.Current.Response.Headers.Remove("X-Powered-By");
HttpContext.Current.Response.Headers.Remove("ETag");
HttpContext.Current.Response.Headers.Remove("Server");
}
Обработка ошибок
protected internal void Application_Error(object sender, EventArgs e)
{
// get the error code
int ec = ((HttpException)HttpContext.Current.Error).GetHttpCode();
// get the request path
// string req = HttpContext.Current.Request.Path;
// *** I suggest you to log the error before moving on
// clear the error to avoid IIS actions
HttpContext.Current.Server.ClearError();
if (ec == 404)
{
// do what ever you want
}
// ... add other error codes handling;
}
Следующий шаг - скрыть aspx.
Предположим, что мы хотим, чтобы наши страницы .aspx были представлены в формате .html. Ответ здесь: Как правильно отобразить .html в конвейер ASP.NET в IIS7
Просто позаботьтесь о том, чтобы выбрать правильную версию фреймворка.Если у вас нет доступа к диспетчеру IIS, измените файл web.config (отображающий только то, что необходимо для этой задачи):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="htmlpipe" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
</handlers>
</system.webServer>
</configuration>
Вышеуказанные настройки могут отличаться для вашего компьютера, сервера и т. Д.среду тестирования с теми же базовыми атрибутами (версия платформы, 32/64-битная версия), внесите изменения в свой IIS, а затем проверьте сгенерированную запись в файле web.config.
Позвольте мне пошутить.«Вам нравится этот продукт?»
Спасибо, Фрэнк, вы сделали так, чтобы подключили старые диски и нашли вещи, которые были забыты.Прошу прощения за отсутствие предложений по классическому ASP.
PS.Не забудьте ответ от HackedByChinese.