3

我有一个建立在 EPiServer 7.1 之上的 MVC 4 应用程序。EPiServer 使用 StructureMap 作为它的 IoC 框架,这可能与我的问题有关。无论如何,这就是我所做的:

  1. 通过“Manage Nuget Packages...”,将“Glimpse Mvc4”添加到我的项目中
  2. 验证 web.config 已按预期更新
  3. 重新启动我的应用程序

添加 Glimpse 后,所有请求都失败并返回 NullReferenceException,例如,如下所示:

样本错误

我尝试通过在 web.config 的 Glimpse 部分中的“logging level="Trace"' 中进行评论来启用 Glimpse 日志记录,但在 Windows 事件日志或 log4net 日志文件中都找不到任何日志记录。

有关如何进一步排除故障的想法或解决方案的提示?

4

2 回答 2

5

一种解决方法(感谢@avanderhoorn!)是将其添加到 web.config 的“一瞥”部分:

<glimpse defaultRuntimePolicy="On" endpointBaseUri="~/Glimpse.axd">
      <tabs>
        <ignoredTypes>
          <add type="Glimpse.AspNet.Tab.Routes, Glimpse.AspNet"/>
        </ignoredTypes>
      </tabs>
    <inspectors>
        <ignoredTypes>
            <add type="Glimpse.AspNet.Inspector.RoutesInspector, Glimpse.AspNet"/>
            <add type="Glimpse.Mvc.Inspector.ModelBinderInspector, Glimpse.Mvc4"/>
        </ignoredTypes>
    </inspectors>
</glimpse>

这将禁用 Glimpse 与 EPiServer 中断的两个部分。据我所知,您仍然可以获得最有用的部件!

于 2013-06-26T13:43:28.563 回答
0

+1 这里也一样。到目前为止我发现的是,通过添加 Glimpse,它增加了所有路由并替换为它自己的代理类来拦截对路由的调用。EPiServer(尤其是 UrlResolver)似乎不喜欢这种情况。此异常的根本原因是以下方法:

UrlResolver.GetVirtualPath(ContentReference contentLink, string language, RouteValueDictionary routeValues, RequestContext requestContext)

它不喜欢的是路由表中没有 ContentRoute 类型的路由:

foreach (RouteBase base2 in from r in this._routes
where (bool) (r is ContentRoute)
select r)
{
   ...
   if(...)
   {
       return virtualPath;
   }
}

return null;

并且在返回 null 给调用者之后 NullReferenceExpcetion 发生在:

UrlExtensions.MapUrlFromRoute(RequestContext requestContext, RouteCollection routeCollection, string url)

似乎应该等待来自 EPiServer 的补丁。

于 2013-06-25T07:10:01.050 回答