繁体   English   中英

IIS集成管道模式下的ASP.NET URL重写

[英]asp.net url rewriting with IIS integrated pipeline mode

我是ASP.NET的新手。 我创建了一个Web应用程序,并决定使用URL重写。 我尝试了几种解决方案,例如http://urlrewriting.nethttp://urlrewriter.net/index.php/support/configuration

这些解决方案在我的本地主机上运行良好。 但是,当我将其上传到共享托管服务提供商时,我所有的网页都收到500个内部服务器错误。

一家网络托管提供商告诉我HttpModules和HttpHandlers与IIS Integrated Pipeline模式不兼容。 他们说我应该将设置移到system.webServer中。我尝试这样做,但一定在某个地方搞砸了,因为现在我收到404错误。 有人可以告诉我如何使URL重写适合我的情况吗? 这是我原始的web.config的样子:

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

  <system.web>
    <compilation debug="true" targetFramework="4.0"></compilation>
    <httpModules>
      <add name="UrlRewriteModule"
type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />

    </httpModules>
  </system.web>

  <urlrewritingnet
  rewriteOnlyVirtualUrls="true"
  contextItemsPrefix="QueryString"
  defaultPage = "default.aspx"
  defaultProvider="RegEx"
  xmlns="http://www.urlrewriting.net/schemas/config/2006/07" >
    <rewrites>

      <add name="Rewrite"  virtualUrl="^~/([^\/]+)/(\d+)$"
      rewriteUrlParameter="ExcludeFromClientQueryString"
      destinationUrl="~/$1.aspx?id=$2"
      ignoreCase="true" />
      <add name="Rewrite"  virtualUrl="^~/(search|administrator|Default|logout)$"
      rewriteUrlParameter="ExcludeFromClientQueryString"
      destinationUrl="~/$1.aspx"
      ignoreCase="true" />

    </rewrites>
  </urlrewritingnet>

我想他们在说的是

1)您必须在.NET中使用重写器2)您必须对其进行设置以使用URL重写器,该URL重写器位于system.webServer而不是system.web下。

如果我是正确的,他们正在使用URL重写器: http ://www.iis.net/download/urlrewrite

注意:它们可能不允许您使用自定义HTTP处理程序(是的,我知道它是已发布的第三方,但是ISP像这样很有趣)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM