当我在2012年尝试使用MSTest分析代码覆盖时,我得到以下内容.它发生在新项目和新测试上.
Exception was thrown: Code Coverage Analysis engine threw exception(s):
Coverage file "xxxx" is invalid or corrupt.
Run Code Online (Sandbox Code Playgroud) 运行 MVC5 应用程序我在尝试 POST 回我的控制器时收到此错误。
我是在 EnsureFiles() 方法期间发生的,但我根本没有尝试加载任何文件。
这是整个堆栈跟踪
[HttpException (0x80004005): This method or property is not supported after HttpRequest.GetBufferlessInputStream has been invoked.]
System.Web.HttpRequest.EnsureFiles() +3274885
System.Web.HttpRequest.get_Files() +12
System.Web.HttpRequestWrapper.get_Files() +28
System.Web.Mvc.HttpFileCollectionValueProvider.GetHttpPostedFileDictionary(ControllerContext controllerContext) +120
System.Web.Mvc.HttpFileCollectionValueProvider..ctor(ControllerContext controllerContext) +51
System.Web.Mvc.HttpFileCollectionValueProviderFactory.GetValueProvider(ControllerContext controllerContext) +117
System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContext controllerContext) +160
System.Web.Mvc.ControllerBase.get_ValueProvider() +85
System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +154
System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +199
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState) +1680
System.Web.Mvc.Async.WrappedAsyncResult`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +59
System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +151
System.Web.Mvc.Async.AsyncResultWrapper.Begin(AsyncCallback callback, Object state, BeginInvokeDelegate beginDelegate, EndInvokeDelegate`1 endDelegate, Object tag, …Run Code Online (Sandbox Code Playgroud) 我有一个ASP.NET MVC 3应用程序,我正在进行AJAX调用并期待返回JSON结果.我正在使用ELMAH来记录错误.在测试时我遇到了意外错误.ELMAH记录了错误,但我的客户端脚本没有记录,因为现在结果不是正确的JSON.如果我处理控制器中的所有错误以返回正确的JSON结果,则ELMAH不会记录错误.我知道我可以专门调用ELMAH来记录错误,但我更喜欢我不必在其他任何地方这样做.
任何人都可以澄清处理这种情况的"正确"方法吗?
例如
try
{
//service.dosomethingwitherror();
return new JsonResult { Data = new { result = true, message = "Success." } };
}
catch (Exception ex)
{
return new JsonResult { Data = new { result = true, message = "Failed." } };
}
Run Code Online (Sandbox Code Playgroud)
因为我'处理'这个,所以ELMAH不会记录.如果我不处理这个,我的客户端将无法获得JSON ...
是否可以登录传入参数为通用参数的方法?例如
public async Task<TResult> Handle(TQuery query)
{
var watch = Stopwatch.StartNew();
var result = await _handler.Handle(query);
watch.Stop();
Serilog.Log.Logger.Information("Processed {@" + query.GetType().Name + "} in {Elapsed} ms",
query.GetType().Name, watch.ElapsedMilliseconds);
return result;
}
Run Code Online (Sandbox Code Playgroud)
请注意,在上面,我在模板中使用字符串连接,但我不确定这是最佳实践。还有另一种方法来记录传入的对象吗?