任何 URL 重写规则都会导致 iis7 上的内部服务器错误

任何 URL 重写规则都会导致 iis7 上的内部服务器错误

我在 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 中进行更改,请尝试发布当前规则的屏幕截图,有人可能会发现问题。

相关内容