我是ASP.NET新手。我创建了一个Web应用程序并决定使用url重写。我尝试了多种解决方案,例如http://urlrewriting.net和http://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>
答案 0 :(得分:1)
我认为他们所说的是
1)你必须在.NET中使用重写器 2)您必须将其设置为使用URL重写器,它位于system.webServer下,而不是system.web下。
如果我是正确的,他们正在使用网址重写器:http://www.iis.net/download/urlrewrite
注意:他们可能不允许使用自定义HTTP处理程序(是的,我知道它是已发布的第三方,但ISP很有趣)。