ASP.NET偽靜態頁面的實現和偽靜態在IIS7.0中的配置

來源:互聯網
上載者:User
關於偽靜態,其實就是重寫URl,之前也不清楚怎麼配置IIS,在項目中用VS運行很正常,當將網站發布後,在IIS中偽靜態就失效了,不能訪問,會報出404(不存在)的錯誤等其他的錯誤提示,今天在網上逛了幾個小時 搜遍了, 最後都是失敗,網上大多數是在IIs6.0 以及更低版本上的配置,但在IIS7.0 以上的版本就不行了,不多說,直接正題:

首先你要在你的項目裡引用兩個DLL:

       URLRewriter.dll

  ActionlessForm.dll

真正實現重寫的是 URLRewriter.dll   但是如果你要實現分頁,那麼必須使用這個ActionlessForm .dll

一.添加 URLRewriter.dll

1.(保證偽靜態可以在vs項目中運行)下載一個URLRewriter.dll 程式集,1:http://download.csdn.net/source/5245142:http://www.nmju.net/UserFiles/URLRewriter.rar3:download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi在項目中引用這個程式集,偽靜態文法...(例把.aspx 的頁面  用.html來表示,web.config檔案中--> 添加 以下節點<configSections>
    <section name="RewriterConfig" requirePermission="false" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" /></configSections><RewriterConfig>
  <Rules>
      <RewriterRule><!--一個參數->
        <LookFor>~/cn/ss_(.[\d]*)\.html</LookFor>
        <SendTo>~/cn/news.aspx?id=$1</SendTo>
      </RewriterRule><RewriterRule><!--傳兩個參數的-->
        <LookFor>~/cn/ss_(.[\d]*)0(.[\w]*).html</LookFor> <!--(.[\d]*)(.[\w]*).html  或者 ss_,(.[0-9]*),(.[0-9]*)\.html-->
        <SendTo><![CDATA[~/cn/news.aspx?id=$1&sid=$2]]></SendTo>
      </RewriterRule>     <RewriterRule><!--三個參數-->
        <LookFor>~/cn/ss_(.[\d]*)0(.[\w]*)0(.[\w]*).html</LookFor> <SendTo><![CDATA[~/ZH-CN/news.aspx?id=$1&sid=$2&n_id=$3]]></SendTo>
      </RewriterRule> <httpHandlers>
      <add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
      <add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" /> </httpHandlers><httpModules><add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/></httpModules>2.發布網站在IIS中運行你的網站-->IIS中處理常式映射-->添加指令碼映射(路徑:*.html  可執行檔%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll  名稱:任意,比如Hml )添加萬用字元指令碼映射(路徑:*  可執行檔:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll  名稱:任意,比如All)託管處理常式映射(路徑:*  可執行檔:System.Web.UI.PageHandlerFactory 名稱 任意 比如Html-Integrate)-------->IIS中 模組-->添加---->(名稱:任意 如All  類型:URLRewriter.ModuleRewriter 把 僅針對向asp.net 應用程式或託管處理常式發出請求調用  勾上  ok )-->ok 3.測試 訪問 http://localhost:8080/cn/ss_1.html其實訪問的是http://localhost:8080/cn/news.aspx?id=1

 

 二.添加ActionlessForm.dll

 1.添加ActionlessForm.cs類

namespace ActionlessForm {
public class Form : System.Web.UI.HtmlControls.HtmlForm
{protected override void RenderAttributes(HtmlTextWriter writer)
{
writer.WriteAttribute("name", this.Name);
base.Attributes.Remove("name");
writer.WriteAttribute("method", this.Method);
base.Attributes.Remove("method");
this.Attributes.Render(writer);
base.Attributes.Remove("action");
if (base.ID != null)
writer.WriteAttribute("id", base.ClientID);
}}}

 

建立此類並對其進行編譯之後,要在 ASP.NET Web 應用程式中使用它,應首先將其添加到 Web 應用程式的 References 檔案夾中。

然後,要 使用它來代替 HtmlForm 類,做法是在 ASP.NET 網頁的頂部添加以下內容:

<%@ Register TagPrefix="skm" Namespace="ActionlessForm"
Assembly="ActionlessForm" %>
然後,將 <form runat="server">(如果有)替換為:
<skm:Form id="Form1" method="post" runat="server">
並將右邊的 </form> 標記替換為:

</skm:Form>

======>> 成功!

 


作者:Mr.Yoyior
出處:http://www.cnblogs.com/yoyiorlee/

本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,如有問題,可以通過yoyiorlee@gmail.com聯絡我,非常感謝。

border-bottom: #e0e0e0 1px dashed; border-left: #e0e0e0 1px dashed; padding-top: 10px;
padding-right: 10px; padding-bottom: 10px; padding-left: 10px;
font-family: 微軟雅黑; font-size: 12px;">
反饋文章品質,你可以通過快速通道評論:
 
 
 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.