asp.net url用IIS集成管道模式重写

时间:2011-04-26 13:15:37

标签: asp.net mod-rewrite

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

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

网络托管服务提供商告诉我,HttpModules和HttpHandler与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 个答案:

答案 0 :(得分:1)

我认为他们所说的是

1)你必须在.NET中使用重写器 2)您必须将其设置为使用URL重写器,它位于system.webServer下,而不是system.web下。

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

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