Как настроить URL-адреса без расширений с помощью сервера Visual Web Development?

Я использую встроенный сервер разработки ASP.NET (VWD) Visual Studios для тестирования своего веб-сайта во время разработки.

Я хотел бы, чтобы на этом веб-сайте ASP.NET использовались URL-адреса без расширений (для страниц не требуется расширение aspx). Обычно я бы настраивал пользовательский 404 в IIS, который направляет на страницу ASPX. Как мне сделать это с VWD?

P.S. Это не веб-сайт ASP.NET MVC.


person Gabe Sumner    schedule 19.01.2009    source источник


Ответы (4)


Вот пример Web.Config с использованием UrlRewritingNet. Это позволит вам выполнять перезапись без расширений без необходимости писать какой-либо HttpModule или что-то в этом роде.

(полная статья здесь)

Примечание: для этого требуется IIS7, поскольку он использует раздел system.webServer файла web.config.


<configSections>  
    <section name="urlrewritingnet"    
             restartOnExternalChanges="true"    
             requirePermission="false"    
             type="UrlRewritingNet.Configuration.UrlRewriteSection,  UrlRewritingNet.UrlRewriter" />  
</configSections>  

<system.webServer>  
    <modules runAllManagedModulesForAllRequests="true">   
        <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />  
    </modules>  
</system.webServer>  


<urlrewritingnet rewriteOnlyVirtualUrls="true"    
                 contextItemsPrefix="QueryString"    
                 xmlns="http://www.urlrewriting.net/schemas/config/2006/07">   
    <rewrites>  
        <!--Enable HTM(L) Extensions-->  
        <add name="pageHTML"    
             virtualUrl="^~/(.+).htm(.*)"    
             redirectMode="Permanent"  
             rewriteUrlParameter="ExcludeFromClientQueryString"    
             destinationUrl="~/$1.aspx"    
             ignoreCase="true" />  
        <!--Fix the WebResource JS Error-->  
        <add name="WebResourceFix"    
             virtualUrl="^~/WebResource.axd(.*)"  
             rewriteUrlParameter="IncludeQueryStringForRewrite"    
             destinationUrl="~/WebResource.axd$1"    
             ignoreCase="true"/>   
        <!--Fix the ScriptResource JS Error-->  
        <add name="ScriptResource"    
             virtualUrl="^~/ScriptResource.axd(.*)"  
             rewriteUrlParameter="IncludeQueryStringForRewrite"    
             destinationUrl="~/ScriptResource.axd$1"    
             ignoreCase="true"/>   
        <!--Allow Extensionless Page Extensions-->  
        <add name="pageExtensionless"  
             virtualUrl="^~/(.+)$"  
             redirectMode="Permanent"  
             rewriteUrlParameter="ExcludeFromClientQueryString"  
             destinationUrl="~/$1.aspx"  
             ignoreCase="true" />  
    </rewrites>  
</urlrewritingnet>  

person Chase Florell    schedule 08.08.2009

Тебе ничего особенного делать не нужно. Просто удалите расширение .aspx из файла подкачки ASPX, и он должен нормально работать с VWD. Дизайнер Visual Studio, вероятно, пожалуется, что для расширения не зарегистрирован поставщик сборки '', но вы можете просто проигнорировать это. Затем вы можете ссылаться на страницу без расширения:

http://localhost:2181/Default

<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    Hello World
    </div>
    </form>
</body>
</html>
person Darin Dimitrov    schedule 19.01.2009

Если вы пытаетесь получить что-то вроде http://localhost:3000/value, перейдите к http://localhost:3000/page.aspx?tag=value, то вы можете использовать HttpModule, что также является хорошей альтернативой перенаправлению 404. Я тоже делал то же самое.

Я опубликовал пример кода в предыдущем вопросе.

person DavGarcia    schedule 19.01.2009

Все, что вам нужно сделать, это добавить модуль в два разных места в файле web.config ...

<system.web>
    <pages theme="Default" />
    <httpModules>
        <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    </httpModules>
</system.web>


<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <remove name="UrlRewriteModule"/>
        <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    </modules>
</system.webServer>

Первый - добавить его в ваши httpModules, и он будет работать в вашей среде VS Dev, а второй - для IIS7.

person Chase Florell    schedule 28.08.2009