2009-01-19 6 views
2

J'utilise le serveur de développement ASP.NET intégré de Visual Studios (VWD) pour tester mon site Web pendant le développement.Comment configurer des URL sans extension avec le serveur Visual Web Development?

Je voudrais que ce site Web ASP.NET utilise des URL sans extension (les pages ne nécessitent pas l'extension aspx). Ordinairement, je configurerais un 404 personnalisé dans IIS qui dirige vers une page ASPX. Comment ferais-je cela avec VWD?

P.S. Ce n'est pas un site Web ASP.NET MVC.

Répondre

1

Vous n'avez rien de spécial à faire. Supprimez simplement l'extension .aspx du fichier de page ASPX et cela devrait fonctionner correctement avec VWD. Le concepteur Visual Studio se plaindra probablement qu'il n'y a aucun fournisseur de construction enregistré pour l'extension '', mais vous pouvez simplement l'ignorer. Ensuite, vous pouvez référencer la page sans extension:

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> 
2

Voici un exemple de Web.Config utilisant UrlRewritingNet. Cela vous permettra de faire une réécriture sans extension sans devoir écrire un HttpModule ou quelque chose comme ça.

(article complet here)

Note: cela nécessite IIS7 car il utilise la section system.webServer du 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> 

1

Tout ce que vous devez faire est d'ajouter le module à deux endroits différents au sein de votre 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> 

Le premier est à ajoutez-le à votre httpModules avec fonctionnera dans votre environnement VS Dev, et le second sera pour IIS7

Questions connexes