2013-04-15 78 views
2

我使用南希MVC和Nancy.Elmah。目前,Nancy存在一個錯誤,它會爲接收標頭爲「*」的請求引發異常。這裏的ELMAH日誌:南希MVC框架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> 

過濾它,但錯誤沒有被過濾掉。

還嘗試綁定=「BaseException.Message」沒有運氣。

我想要一種方式來過濾這些消息被記錄。有人可以「糾正」我的過濾配置上面這樣做嗎?謝謝!

回答

1

好了,經過幾小時的追蹤和錯誤,我發現問題是,「參數名稱:*」部分不是實際異常消息的一部分。我猜測日誌中的消息是異常消息和參數值的串聯。如圖所示更改過濾器,它的工作原理。

<errorFilter> 
    <test> 
    <regex binding="Exception.Message" pattern="inputString not in correct Type/SubType format" /> 
    </test> 
</errorFilter>