2

我正在使用 Nancy MVC 和 Nancy.Elmah。目前,Nancy 中存在一个错误,该错误会为接受标头为“*”的请求引发异常。这是 Elmah 日志:

  System.ArgumentException
  inputString not in correct Type/SubType format Parameter name: *

  System.ArgumentException: inputString not in correct Type/SubType format
  Parameter name: *
     at Nancy.Responses.Negotiation.MediaRange.FromString(String contentType)
     at Nancy.Routing.DefaultRouteInvoker.<>c__DisplayClass5a.<>c__DisplayClass5c.<GetCompatibleHeaders>b__4f(MediaRange mr)
     at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
     at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()
     at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
     at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
     at Nancy.Routing.DefaultRouteInvoker.GetCompatibleHeaders(IEnumerable`1 coercedAcceptHeaders, NancyContext context, Negotiator negotiator)
     at Nancy.Routing.DefaultRouteInvoker.ProcessAsNegotiator(Object routeResult, NancyContext context)
     at Nancy.Routing.DefaultRouteInvoker.InvokeRouteWithStrategy(Object result, NancyContext context)
     at System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
     at CallSite.Target(Closure , CallSite , DefaultRouteInvoker , Object , NancyContext )
     at Nancy.Routing.DefaultRouteInvoker.Invoke(Route route, DynamicDictionary parameters, NancyContext context)
     at Nancy.Routing.DefaultRequestDispatcher.Dispatch(NancyContext context)
     at Nancy.NancyEngine.InvokeRequestLifeCycle(NancyContext context, IPipelines pipelines)

我尝试使用以下 web.config 对其进行过滤

<errorFilter>
  <test>
    <or>
      <regex binding="Exception" pattern="inputString not in correct Type/SubType format Parameter name: \*" />
    </or>
  </test>
</errorFilter>

但是错误并没有被过滤掉。

还尝试了 binding="BaseException.Message" 没有运气。

我想要一种方法来过滤这些消息以防止被记录。可以“纠正”我上面的过滤器配置吗?谢谢!

4

1 回答 1

1

好吧,经过几个小时的跟踪和错误,我发现问题是“参数名称:*”部分不是实际异常消息的一部分。我猜日志中的消息是异常消息和参数值的串联。如图所示更改了过滤器,它的工作原理。

<errorFilter>
  <test>
    <regex binding="Exception.Message" pattern="inputString not in correct Type/SubType format" />
  </test>
</errorFilter>
于 2013-04-16T11:58:46.857 回答