Iis 当我重定向到Sitecore的某个页面时,为什么Sitecore会引发NullReferenceException异常?

Iis 当我重定向到Sitecore的某个页面时,为什么Sitecore会引发NullReferenceException异常?,iis,iis-7,url-rewriting,sitecore,sitecore6,Iis,Iis 7,Url Rewriting,Sitecore,Sitecore6,我正在Windows 2008上运行Sitecore 6.1,IIS7,我正在尝试使用URL重写模块进行重定向。当我启用规则并点击触发它的URL时,我会得到一个YSOD。同样的规则在同一台机器上的非sitecore站点上完全有效。根据失败的请求跟踪,重写模块做得很好,但是Sitecore抛出异常,即使重定向指向另一台服务器。这可能是我对某些东西的错误理解造成的,但我就是不明白为什么它不起作用。YSOD的详细信息如下 [NullReferenceException: Object referenc

我正在Windows 2008上运行Sitecore 6.1,IIS7,我正在尝试使用URL重写模块进行重定向。当我启用规则并点击触发它的URL时,我会得到一个YSOD。同样的规则在同一台机器上的非sitecore站点上完全有效。根据失败的请求跟踪,重写模块做得很好,但是Sitecore抛出异常,即使重定向指向另一台服务器。这可能是我对某些东西的错误理解造成的,但我就是不明白为什么它不起作用。YSOD的详细信息如下

[NullReferenceException: Object reference not set to an instance of an object.]  
   Sitecore.Nexus.Web.HttpModule.(Object sender, EventArgs e) +273  
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68  
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75  

Sitecore有自己的URL重定向引擎,所以这里可能会出现一些问题。您可能需要移动HttpModule,以便它在链的早期执行。

执行此操作时可能会出现相同的错误

Response.Redirect(“~/SomeUrl.aspx”)
在C代码中,解决此问题的方法是使用重载:

Response.Redirect(“~/SomeUrl.aspx”,true)
这将立即结束响应

重写模块显然没有立即结束请求,从而允许Sitecore解决此问题。您可以通过创建一个模块来处理重定向,或者尝试扩展URL重写模块以立即结束响应来解决此问题。

使用管道模式“经典”而不是“集成”


Sitecore声称已在6.2版本100831(更新-4)中修复了这一问题--

我在Sitecore v6.5的多站点实例中遇到了这一问题,请参见我的回答:

故障跟踪明确显示了Sitecore管道启动之前发生的重写。事情发生的顺序不对,这还有意义吗?我想没有。但有趣的是,这个Nexus模块是第一个注册Sitecore的模块(我刚刚检查了我的web.config)。你试过把它取下来吗?我不知道它是做什么的。好吧,Nexus是Sitecore不可分割的一部分。。。无法禁用它。问题:在浏览器中浏览目标URL时会发生什么情况?同样的错误?什么是完整的URL?它有Sitecore不会处理的扩展吗?@Brian-如果您使用“普通”浏览器浏览到URL,页面加载良好。只有当爬虫试图访问重写的URL时,它才会抛出302“对象移动”错误。至少我们的情况就是这样。这是怎么一个答案?我遇到了同样的问题,但不确定是什么解决了它或什么是解决方案?对我来说,一切都很好,但在不相关的部署之后,它突然停止了。有什么想法吗?有确定的解决方案吗?缺少模块的登录导致了我的悲伤。此“修复”的问题是,如果您使用新的无扩展名URL选项(删除.ASPX扩展名),则无法在经典模式下运行项目。它最多可以提供404页。@ianpoley-有趣的是,在切换到classic之后,又回到Integrated,现在已经修复了