ASP.NET MVC5에서 예외를 문자화합니다.
8305 단어 ASP.NET_MVCC#
하고 싶은 일.
Controller 이외의 예외
Global.asax.cs의 ApplicationError 이벤트에 집중
잘못된 내용을 NLog으로 출력하려면(엄밀히 말하면 Server.GetLastError()의 메시지)
시도해 본 일
웹은 소스 파일의 인코딩 및 요청, 응답, 응답 헤드를 UTF-8로 취급합니다.config에 다음 설명을 추가합니다
<configuration>
<system.web>
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" responseHeaderEncoding="utf-8" />
</system.web>
・・・
NLog 출력의 파일 인코딩도 UTF-8로 변경됨<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="errorlog"
xsi:type="File"
layout="${longdate} [${threadid:padding=8}] [${uppercase:${level:padding=-5}}] ${callsite}() ${message} ${exception:format=tostring}"
fileName="${basedir}/APP_Data/nlog/ErrorLog.txt"
archiveFileName="${basedir}/App_Data/nlog/ErrorLog.{#####}.txt"
maxArchiveFiles="100"
archiveAboveSize="102400"
archiveNumbering="Sequence"
archiveEvery="Day"
concurrentWrites="true"
keepFileOpen="false"
encoding="UTF-8" />
</targets>
<rules>
<logger name="ExceptionHandler" minlevel="Debug" writeTo="errorlog" />
</rules>
</nlog>
나는 이렇게 하면 될 수 있다고 생각한다.asax.cs로 다음 처리를 만들어서 로그를 토해냈습니다using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using NLog;
namespace Hoge
{
public class MvcApplication : System.Web.HttpApplication
{
private static Logger logger = NLog.LogManager.GetLogger("ExceptionHandler");
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
protected void Application_Error(object sender, EventArgs e)
{
if (Server != null)
{
var ex = Server.GetLastError();
logger.Fatal(ex);
}
}
}
}
결실
2018-11-20 18:49:37.6676 [ 6] [FATAL] Hoge.MvcApplication.Application_Error() System.Web.HttpException (0x80004005): !baRrz!A public action method 'Fuga' was not found on controller 'Hoge.Controllers.HogeController'. 表©鷗字㌍ 表!
場所 System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
場所 System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)
(以下スタックトレース)
네.잘못된 내용이 바뀌었어!이거 정말 곤란하다
한 마디로, 문자화된 텍스트를 간단하게 복사해 보고 Google 선생님께 물어봤습니다.
Qita 관련 기사 찾았다!
프로그램 라이브러리 문제인 것 같습니다.
실제로 확인해 볼게요.
설명이 틀렸습니다.
설명문의 잘못된 정황을 보면 버전 중 3.2.4와 3.2.5는 NG였다.
3.2.6 정상으로 보인다.
Microsoft.AspNet.Mvc.ja를 지금까지 업데이트한 최신 안정판(3.2.6)
Razor.ja 및 Webpagesja도 무단으로 업데이트됐어요.
결실
2018-11-20 18:55:40.0646 [ 8] [FATAL] Hoge.MvcApplication.Application_Error() System.Web.HttpException (0x80004005): コントローラー 'Hoge.Controllers.HogeController' にパブリック アクション メソッド 'Fuga' が見つかりませんでした。
場所 System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
場所 System.Web.Mvc.Controller.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState)
이렇게 해서 로그를 어지럽히지 않고 출력했기 때문에 순조롭게 해결되었다.
Reference
이 문제에 관하여(ASP.NET MVC5에서 예외를 문자화합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/BluOxy/items/d8b4336e8cdcc7c74c0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)