Автоматически добавлять строку запроса из запроса страницы в исходящий запрос страницы в ASp.NET WebForms - PullRequest
1 голос
/ 07 октября 2011

Я поддерживаю общедоступный веб-сайт среднего размера для компании, созданной с использованием C # и ASP.Net WebForms с использованием .NET Framework 3.5. Один из наших сторонних консультантов по маркетингу / генерации потенциальных клиентов хочет зарезервировать несколько кодов строк запроса, которые входят в Google Analytics и сохраняют эти коды при перемещении пользователя по сайту. Поскольку (по понятным причинам) я не хочу касаться каждого места, где мы генерируем внутреннюю URL-ссылку, чтобы поддерживать эти коды, есть ли где-нибудь в жизненном цикле страницы ASP.NET, где я мог бы их перехватить (или когда они написано, когда страница обслуживается или после щелчка по ссылке), поэтому мне не нужно менять ссылки, созданные на десятках страниц и сотнях отдельных экземпляров.

Спасибо

Ответы [ 2 ]

1 голос
/ 08 октября 2011

Если вы работаете в IIS 7, изучите исходящие правила с помощью модуля перезаписи URL IIS - http://learn.iis.net/page.aspx/657/creating-outbound-rules-for-url-rewrite-module/. Они чрезвычайно эффективны. Возможно, вы сможете сделать это и с более старыми версиями IIS, но я работал только с 7.

Добавление следующих правил в ваш файл web.config приведет к добавлению всех значений строки запроса в URL-адресе request к URL-адресам в hrefs каждого тега привязки в ответе , Правила будут применяться к каждой странице вашего сайта.

<rewrite>
  <outboundRules>
    <rule name="Add request query string when there is an existing query string" 
          patternSyntax="ECMAScript" stopProcessing="true">
      <match filterByTags="A" pattern="(.+)(\?)(.+)" />
      <conditions>
        <add input="{QUERY_STRING}" pattern=".+" />
      </conditions>
      <action type="Rewrite" value="{R:0}&amp;{C:0}" />
    </rule>
    <rule name="Add request query string when there is a ? but no query string data" 
          patternSyntax="ECMAScript" stopProcessing="true">
      <match filterByTags="A" pattern="(.+)(\?)$" />
      <conditions>
        <add input="{QUERY_STRING}" pattern=".+" />
      </conditions>
      <action type="Rewrite" value="{R:0}{C:0}" />
    </rule>
    <rule name="Add request query string when there is not an existing query string" 
          patternSyntax="ECMAScript" stopProcessing="true">
      <match filterByTags="A" pattern="(.+)(\?){0}" />
      <conditions>
        <add input="{QUERY_STRING}" pattern=".+" />
      </conditions>
      <action type="Rewrite" value="{R:0}?{C:0}" />
    </rule>
  </outboundRules>
</rewrite>
0 голосов
/ 07 октября 2011

Вы, вероятно, хотите посмотреть на HTTP-модули.В этой статье базы знаний содержится немного информации: http://support.microsoft.com/kb/307985. Вы можете перехватить BeginRequest и, возможно, изменить запрос или перенаправить запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...