关于伪静态,其实就是重写URl,之前也不清楚怎么配置IIS,在项目中用VS运行很正常,当将网站发布后,在IIS中伪静态就失效了,不能访问,会报出404(不存在)的错误等其他的错误提示,今天在网上逛了几个小时 搜遍了 首先你要在你的项目里引用两个DLL: ![]() ?? ? ??URLRewriter.dll ActionlessForm.dll 真正实现重写的是?URLRewriter.dll?? 但是如果你要实现分页,那么必须使用这个ActionlessForm .dll 一.添加?URLRewriter.dll 1.(保证伪静态可以在vs项目中运行)下载一个URLRewriter.dll 程序集, 下载地址3: 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.测试 ? ? ?二.添加 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 |
? ? ?