URL Rewriter.NET проблема узла web.config - PullRequest
0 голосов
/ 26 марта 2009

Я использую URL Rewriter.NET (что мне очень нравится, по сравнению с URL Rewriting.NET - кажется, что это более универсально, не поймите меня неправильно, мне нравится перезапись URL) .NET, но это, похоже, не удовлетворяет потребности, учитывая, что я знаю об инструменте). Я пытаюсь использовать узел default-documents для переопределения документов по умолчанию для сайта. Я попытался добавить его в узел перезаписи, но я получаю ошибку web.config

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: The element 'default-documents' is not allowed.

Source Error: 


Line 187:
Line 188:   <rewriter>
Line 189:       <default-documents>
Line 190:           <document>default.aspx</document>
Line 191:           <document>index.aspx</document>

Кто-нибудь использовал этот инструмент в прошлом, и кто-нибудь знает, где разместить этот узел (или правильное использование)?

EDIT:

Я попробовал приведенное ниже предложение, но оно не сработало. Вот что находится в моем дополнительном конфигурационном файле (это единственное содержимое в конфигурационном файле)

<rewriter>
        <rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" />
        <default-documents>
            <document>default.aspx</document>
            <document>index.aspx</document>
        </default-documents>
</rewriter>

Ответы [ 3 ]

1 голос
/ 26 марта 2009

Этот фрагмент работает для меня:

    <configSections>
        <section name="rewriter" 
                 requirePermission="false" 
                 type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" 
        />
    </configSections>

    <rewriter>
        <default-documents>
            <document>index.aspx</document>
        </default-documents>
    </rewriter>

Изменить: Убедитесь, что там, где вы добавили карту приложения с подстановочными знаками, вы также сняли флажок «Проверить, что файл существует». Если вы этого не сделаете, то по умолчанию документы ничего не сделают.

Другое редактирование: обнаружен шаг установки, иллюстрирующий флажок «Проверить, что файл существует». См. Шаг 8 здесь :

1 голос
/ 26 марта 2009

Ранее я использовал urlrewriter, и у меня были некоторые проблемы с настройкой документа по умолчанию. Однако, в конце концов, мы (и другие мелкие неприятности) заработали, переместив конфигурацию urlrewriter в файл конфигурации, отличный от web.config.

<rewriter configSource="urlrewriter.config"/>

Помните, что для корректной работы urlrewriter необходимо также отключить документы по умолчанию в IIS. Это также вызвало кучу неприятных проблем.

РЕДАКТИРОВАТЬ: не забудьте добавить эту строку в ваши разделы конфигурации в web.config

<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>

Надеюсь, это поможет.

0 голосов
/ 26 марта 2009

Я считаю, что решением этой проблемы является версия .NET, которую я использую на сайте. Я использую среду выполнения 2.0, и dll была собрана для среды выполнения 1.1. Я увидел на веб-сайте, что среда выполнения 2.0 все еще в RC (с середины 2007 года), и, следовательно, я не буду использовать его на этом производственном веб-сайте. Вместо этого я выяснил, как использовать URL Rewriting.NET для достижения той же цели.

Я добавил следующее правило:

<add name="Redirect54" virtualUrl="~/content/myvirtualpage.aspx"
    rewriteUrlParameter="ExcludeFromClientQueryString"
    destinationUrl="~/content/mydestinationpage.aspx?id=9"
    redirect="None"   
    ignoreCase="true"  />

Это вызывает ответ HTTP 200 на myvirtualpage.aspx вместо перезаписи. Конечная цель состоит в том, чтобы mydestinationpage.aspx? Id = 9 имел 301 для myvirtualpage.aspx, который затем служил бы для myvirtualpage.aspx с ответом 200 HTTP. Это немного не так.

...