![任何 URL 重写规则都会导致 iis7 上的内部服务器错误](https://linux22.com/image/657115/%E4%BB%BB%E4%BD%95%20URL%20%E9%87%8D%E5%86%99%E8%A7%84%E5%88%99%E9%83%BD%E4%BC%9A%E5%AF%BC%E8%87%B4%20iis7%20%E4%B8%8A%E7%9A%84%E5%86%85%E9%83%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%94%99%E8%AF%AF.png)
我在 Windows Server 2008 上安装了 iis7 和 iis url 重写模块 2。
任何 URL 重写规则(在我的情况下是一个简单的规范域名规则)都会导致 Web 应用程序返回错误 500。
在我的例子中,我有 4 个域映射到同一个 Web 应用程序,并且想要将其中 3 个备用域重定向到主域,设置规则后,对这些域的 Web 应用程序的任何请求都会返回错误,而不受规则影响的 Web 应用程序的一个域仍然正常。
我确实修复了 iis url 重写模块,但问题仍然存在。
如果我关闭自定义错误,我会发现问题出在我的 Web 应用程序上,但如果没有任何重写/重定向规则,我不会收到任何错误。重写可能会干扰管道中的某些内容。
堆栈跟踪如下:
[NullReferenceException: Object reference not set to an instance of an object.]
Glimpse.Core.Extensions.DataStoreExtensions.Get(IDataStore store, String key) +35
Glimpse.Core.Extensibility.AlternateMethod.NewImplementation(IAlternateMethodContext context) +50
Castle.DynamicProxy.AbstractInvocation.Proceed() +595
Castle.Proxies.IDependencyResolverProxy.GetService(Type serviceType) +177
System.Web.Mvc.DependencyResolverExtensions.GetService(IDependencyResolver resolver) +61
xxxxx.NHibernateSessionPerRequestModule.<Init>b__1(Object param0, EventArgs param1) +40
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +92
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165
URL 重写/重定向不应该结束请求的处理并提交响应吗?
答案1
我不确定您的错误,但由于没有其他人尝试过答案,并且您有一个问题需要解决,我会建议一种不同的方法来实现您的目标。
让您的主应用程序只响应您希望人们使用的名称。添加第二个 Web 应用程序,响应您想要重定向的 3 个名称。配置此站点以将流量转发到主域。
答案2
您是在 GUI 中创建重定向规则,还是直接编辑 web.config?您的 web.config 中可能某处有错误。尝试关闭自定义错误,以便您可以看到详细的错误消息,这应该可以帮助您追踪问题。
在你的 web.config 中找到此行并取消注释;
<customErrors mode="off"/>
如果您在 GUI 中进行更改,请尝试发布当前规则的屏幕截图,有人可能会发现问题。