ASP.NET의 차기 버전에 관한 좋은 글을 보아서 번역해서 공유합니다~










저작자 표시
신고
by 흥배 2014.08.07 08:00


.NET에서 제공하는 병렬 컨테이너 중의 하나로 저장하는 요소의 순서가 없기 때문에 가장 성능이 좋다.

 

" Thread-safe Collections in .NET Framework 4 and Their Performance Characteristics" 에서 인용

 




PerformanceCharacteristicsOfThreadSafeCollection.pdf




신고
by 흥배 2014.06.26 08:00

.NET에서는 정적 라이브러리 라는 것이 없어서 외부 라이브러리를 사용하면 실행파일을 동작 시키기 위해서는 해당 라이브러리의 DLL이 필요해서 프로젝트를 빌드하면 실행파일과 사용한 라이브러리의 DLL에 같이 생성된다.

 

ILMerge 라는 툴을 사용하면 DLL을 실행파일과 묶어서 하나의 파일로 만들 수 있다.

 

ILMerge 다운로드: http://www.microsoft.com/en-us/download/details.aspx?id=17630

 

 

사용방법

ILMerge를 설치한 후 다음의 명령어로 exe DLL을 하나로 묶는다.

C:\Program Files\Microsoft\ILMerge\ILMerge /out:hoge_merge.exe hoge.exe piyo.dll foo.dll

/out: 에 출력 파일 이름을 지정한다. 다음 인수로는 묶고 싶은 exe, dll 파일 명을 지정한다(위에서는 hoge.exe piyo.dll foo.dll).

 

와일드카드로 파일 명 지정

인수로 넘기는 파일 명을 와일드카드(*)로 지정하고 싶다면 /wildcards를 지정한다.

C:\Program Files\Microsoft\ILMerge\ILMerge /wildcards /out:hoge_merge.exe hoge.exe *.dll

 

 

Visual C#에서 빌드 후 자동으로 파일 묶기

프로젝트 속성에서 '빌드 이벤트' '빌드 후 실행하는 커맨드 라인'에 다음 내용을 추가한다.

set fname_new=$(TargetName)_merge$(TargetExt)

C:\Program Files\Microsoft\ILMerge\ILMerge /wildcards /out:%fname_new% $(TargetFileName) *.dll

 

$(TargetName) … 애플리케이션 어셈블리 명

$(TargetExe) … 확장자(.exe

$(TargetFileName) … 출력 되는 실행 파일 명

 

아래와 같이 새로 만든 파일(실행 파일과 DLL이 합친)과 원래 파일 명이 같으면 디버그가 제대로 동작하지 않는다.

set fname_bk=$(TargetName)_bk$(TargetExt)

move $(TargetFileName) %fname_bk%

C:\Program Files\Microsoft\ILMerge\ILMerge /wildcards /out:$(TargetFileName) %fname_bk% *.dll

 

 

GUI 툴도 있다. http://sourceforge.net/projects/gilma/files/

 

 

참고: http://qiita.com/krsak/items/75a257cc0866a7e8e4aa

 

저작자 표시
신고
by 흥배 2014.06.23 08:00
저작자 표시
신고
by 흥배 2014.06.16 08:00

log4net 이란

아파치의 오픈소스 로그 라이브러리로 Java, C++, .NET 등 다양한 언어와 플랫폼을 지원하는 로그 라이브러리의 .NET 버전이다. 로그를 파일, 콘솔화면, DB로 출력할 수 있고 또 날짜, 파일 크기마다 로그를 새로 생성하도록 할 수 있다.

 

 

 

.NET에서 사용하기

.NET의 경우 NuGet을 사용하여 설치한다.

 

NuGet을 사용하여 log4net 라이브러리를 설치하면 아래 그림처럼 자동으로 프로젝트에 설정된다.

 

위 상태에서 빌드를 한다. 실행 파일이 있는 위치에 log4net 관련 dll와 xml 파일이 있다.

 

NuGet으로 설치한 경우 log4net 관련 설정 정보는 app.config 에 기록한다.

 

로그가 남도록 하면 아래와 같이 로그 파일이 생겨진다.

 

프로그램 실행 도중 로그 설정 파일을 변경하여 적용하기 위해서는 아래 처럼 AssemblyInfo.cs에 [assembly: log4net.Config.XmlConfigurator(Watch = true)] 을 추가한다.

 

 

로그 설정 정보가 있는 app.confog의 예

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

</startup>

 

<log4net>

<!-- 파일을 사용하는 Appender -->

<appender name="LogToFile" type="log4net.Appender.FileAppender" >

<!-- 만들 로그 파일 -->

<param name="File" value="log-file.txt" />

<!-- 기존에 로그 파일이 있다면 연결해서 사용 여부 -->

<param name="AppendToFile" value="true" />

<!-- 로그 형식 -->

<layout type="log4net.Layout.PatternLayout">

<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %message%newline" />

</layout>

</appender>

 

 

<!-- 날짜 단위로 Rolling 하는 파일 Appender -->

<appender name="DayRollingLogToFile" type="log4net.Appender.RollingFileAppender">

<!-- 로그 파일 이름의 선두 부분 -->

<File value="LogSample" />

<!-- 기존에 로그 파일이 있다면 연결해서 사용 여부 -->

<appendToFile value="true" />

<!-- 날짜 마다 파일을 작성하는 것을 지정 -->

<rollingStyle value="date" />

<!-- 로그 파일 이름 고정 여부. 고정하지 않을 때는 false -->

<staticLogFileName value="false" />

<!-- 파일 이름에의 날짜 부분 -->

<datePattern value='"."yyyyMMdd".log"' />

 

          

<layout type="log4net.Layout.PatternLayout">

<!-- 로그 형식 -->

<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />

</layout>

</appender>

 

 

<!-- 파일 크기 단위로 Rolling 하는 파일 Appender -->

<appender name="SizeRollingLogToFile" type="log4net.Appender.RollingFileAppender">

<file value="mylogfile.txt" />

<appendToFile value="true" />

<rollingStyle value="Size" />

<maxSizeRollBackups value="5" />

<maximumFileSize value="10MB" />

<staticLogFileName value="true" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%date [%thread] %level %logger - %message%newline" />

</layout>

</appender>

 

      

<!-- 콘솔을 사용하는 Appender -->

<appender name="LogToConsole" type="log4net.Appender.ConsoleAppender">

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>

</layout>

</appender>

 

 

<root>

<!-- 로그 레벨 지정. 아래에서는 INFO 레벨 이상만 로그가 남는다 -->

<level value="INFO" />

<!-- 아래 로그 레벨 중 하나 선택

<level value="OFF " />

<level value="FATAL" />

<level value="ERROR" />

<level value="WARN" />

<level value="INFO" />

<level value="DEBUG" />

<level value="ALL" />

-->

 

<!-- 어느 로그를 사용할 것인지 지정한다. 현재 파일로그와 날짜별 로그 사용 -->

<appender-ref ref="LogToFile" />

<appender-ref ref="DayRollingLogToFile" />

<!-- 복수 지정 가능 -->

</root>

</log4net>

 

</configuration>

   

 

예제 소스 코드

public partial class Form1 : Form

{

private static readonly log4net.ILog log =

 

log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

 

 

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

log.Info("INFO 출력");

log.Debug("Debug 출력");

log.Error("Error 출력");

}

}

       

 

로그 정보에 로그를 남기는 코드 부분의 파일명이나 위치를 남기고 싶은 경우

로그 형식에 %location 을 사용한다.

<param name="ConversionPattern" value="%date [%thread] %-5level %logger - %location %message%newline" />

   

로그 파일을 특정 폴더에 남기고 싶은경우

현재 실행 파일이 있는 폴더의 Logs 폴더에 남기고 싶은 경우

<log4net>

<!--날짜 단위로 Rolling 하는 파일 Appender-->

<appender name="DayRollingLogToFile" type="log4net.Appender.RollingFileAppender">

<!--로그 파일 이름의 선두 부분-->

<File value="Logs\GameLog" />

   

 

로그 설정 정보를 app.config 파일 이외의 파일에 남기고 싶을 때

'AssemblyInfo.cs' 파일에 아래의 코드를 입력한다

    

[assembly: log4net.Config.DOMConfigurator(ConfigFile = "../../log4net.xml", Watch = true)]

또는

 

// 로그 설정 파일 로딩 후 적용

string logFilePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net_config.xml");

var finfo = new System.IO.FileInfo(logFilePath);

log4net.Config.XmlConfigurator.ConfigureAndWatch(finfo);

logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

 

    

nunit에서 사용할 때 동작하지 않는 경우

Log4Net.config 파일을 만들어서 아래와 같이 만든다.

    

<?xml version="1.0" encoding="utf-8" ?>

<log4net>

    <!-- 필요한 설정 정보 입력 -->

</log4net>

 

소스에서 위에서 만든 설정 파일을 사용하도록 한다.

[SetUp]

public void RunBeforeAnyTests()

{

string logFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Log4Net.config");

FileInfo finfo = new FileInfo(logFilePath);

log4net.Config.XmlConfigurator.ConfigureAndWatch(finfo);

}

 

    

로그를 메일로 보내기

로그 설정 파일에서 log4net.Appender.SmtpAppender 를 사용한다.

보낼 메일의 문지 인코딩은 UTF-8을 사용한다.

로그 메시지 하나마다 메일을 보내는 것이 아니고 하나의 메일에는 복수의 로그 메시지가 있다.

설정 예 

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">

<!-- 메일을 받을 곳의 주소 -->

<to value="to@domain.com" />

 

<!-- 메일을 보내는 곳의 주소 -->

<from value="from@domain.com" />

 

<!-- 제목 -->

<subject value="test logging message" />

 

<!-- 메일 서버 정보 -->

<smtpHost value="SMTPServer.domain.com" />

 

<!-- 메일을 보낼 때의 버퍼 사이즈 -->

<bufferSize value="512" />

<lossy value="true" />

<evaluator type="log4net.Core.LevelEvaluator">

<threshold value="WARN"/>

</evaluator>

 

 

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%newline%date [%thread] %-5level %logger - %message%newline" />

</layout>

</appender>

   

 

Filter

특정 appender에서만 로그 레벨을 바꾸고 싶은 경우 <appender> 요소 내에서 <filter> 요소를 추가하여 조정할 수 있다.

로그 레벨을 FATAL 때만 남기고 싶다면 다음과 같이 한다.    

<filter type="log4net.Filter.LevelRangeFilter">

<param name="LevelMin" value="FATAL" />

<param name="LevelMax" value="FATAL" />

</filter>

   

 

로그 파일 로테이션 시 파일크기+날짜 사용하기

<appender name="debugAppender" type="log4net.Appender.RollingFileAppender">

<filter type="log4net.Filter.LevelMatchFilter">

<levelToMatch value="DEBUG" />

</filter>

<filter type="log4net.Filter.DenyAllFilter" />

<File value="Logs\debug.log" />

<PreserveLogFileNameExtension value="true" />

<appendToFile value="true" />

<rollingStyle value="Composite" />

<maximumFileSize value="32MB" />

 

 

로그 파일 이름에 날짜 붙이기

<File value="Logs\perf_.log" />

<staticLogFileName value="false" />

<datePattern value="yyyyMMdd-HHmm" />

 

perf_20140601-1140.log 라는 식으로 로그 파일이 만들어진다.



같은 로그 파일 이름이 있으면 일련 번호 붙이기

파일 사이즈 및 날짜로 로그 파일을 로테이션 할 때 새로 만드는 파일 이름이 이전과 같은 이름이 되어버려서 이전 것을 덮어 쓸 수 있다.

예를들면 파일 사이즈가 설정 값을 넘겨서 새로 만드는데 이전까지 사용한 로그 파일의 생성 날짜가 같은 날이면 지금 새로 만드는 것도 같은 이름이 되어 버린다.

이유는 파일 이름 규칙이 'xx-날짜.log'로 했기 때문이다.

이름 중복을 피하기 위해서 로그 파일 이름에 일련 번호를 붙이도록 한다.

CountDirection 설정을 사용한다. 사용 방법은 아래와 같다.

<File value="Logs\perf_.log" />

<CountDirection value="1" />

이후 로테이션으로 새로 파일을 만들 때 파일 이름이 다음처러 만들어진다.

info_20140612.1.log

info_20140612.2.log

 


로그 파일 개수 제한

생성된 로그 파일의 최대 개수를 제한 할 수 있다.

<maxSizeRollBackups value="10" />

   

 

서식 타입

%literal 리터럴을 표시(「%」을 출력하는 경우 등)

%newline 개행

%logger logger 이름

%class 클래스 이름

%date 실행 시간

%exception 예외 정보

%location 메소드 이름, 행 번호

%line 행 번호

%message 메시지

%method 메소드 이름

%level 로그 레벨

%thread 스레드 ID

%appdomain 실행 파일 이름

%identity 현재 컨텍스트의 유저 이름

            (System.Threading.Thread.CurrentPrincipal.Identity.Name 의 값이 설정 되어 있다.)

%username 유저 이름

 

 

 

 

 

웹 정보

Log4Net 간단 사용법(Web 포함) http://mvcp.tistory.com/404

log4net을 사용해 보자 http://nalra999.blog.me/110095620129

[ASP.NET] log4net의 설정과 사용법 예제 http://oneprimary.blog.me/30076001926

Apache log4net™ Config Examples http://logging.apache.org/log4net/release/config-examples.html    

신고
by 흥배 2014.06.13 08:00

Windows Forms

처리하지 못한 예외가 발생한 경우 Application.ThreadException 이벤트 핸들러가 자동으로 호출된다. 그래서 여기에 에러 메시지를 보여주는 기능 등을 작성하면 된다.

)

namespace WindowsFormsApplication1

{

    static class Program

    {

        [STAThread]

        static void Main()

        {

            Application.ThreadException +=

 new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new Form1());

        }

 

        static void Application_ThreadException(object sender,

 System.Threading.ThreadExceptionEventArgs e)

        {

            MessageBox.Show("처리하지 못한 예외 발생");

            Application.Exit();

        }

    }

}

 

 

Console

AppDomain.CurrentDomain.UnhandledException 이벤트 핸들러를 자동으로 호출한다.

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            AppDomain.CurrentDomain.UnhandledException +=

new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

        }

 

        static void CurrentDomain_UnhandledException(object sender,

UnhandledExceptionEventArgs e)

        {

            MessageBox.Show("처리하지 못한 예외 발생");

            Environment.Exit(-1);

        }

    }

}

 

 

저작자 표시
신고
by 흥배 2014.04.30 08:00

.NET 언어에서 Native 코드를 직접 만드는 것.

.NET 언어를 컴파일 할 때 C++ 컴파일러가 관여.

클라이언트의 디바이스에 완전하게 네이티브화 한 상태에서 배포.

클라이언트에서 쓸데 없는 전력 소모를 안하고 첫 실행도 빠르다.

현재는 Windows Store App만 지원. 장래에 데스크탑 App도 지원할 예정임.

 

클라이언트 디바이스에 닷넷 프레임워크 설치?

필요없음. 실행에 필요한 것은 전부 네이티브 화, 정적 링크

 

C# 네이티브 컴파일러가 동작하는가?

아니다. MSIL의 사전 컴파일. C#의 경우 C# -> MSIL ->MDIL -> 네이티브화 순서로.

사양 상 .NET 언어라면 무엇이든지 네이티브화 가능하나 현재는 C#만 지원.

 

GC?

여전히 사용. 메모리는 관리된다. Native이지만 unmanaged는 아니다.

.NET Native로 빌드하면 실행 파일에 MRT.dll이라는 DLL이 배포되어 그 안에 GC 코드가 들어가 있다.

 

바이너리 사이즈는 커지지 않나?

사용하지 않는 부분은 빠지고 네이티브화 하여 정적 링크 되므로 괜찮다.

 

라이브러리가 갱신 될 때는?

이것이 현재 Store App만 적용된 이유가 생각. Store 서버 상에서 클라우드 컴파일 하므로 의존하고 있는 라이브러리가 변경 된다면 자동으로 바이너리가 갱신된다.

 

리플렉션은?

가장 제약이 많은 곳이다. 사용하지 않는 코드는 제거되므로 사전에 '리플렉션을 사용하고 있다'라고 컴파일러에 알려줘야 한다.

XAML 데이터 바인딩으로 사용한 타입이나 DataContractSerializer 생상자에 typeof(T)로 넘긴 타입은 자동으로 리플렉션 처리된다.

참조 정의 파일을 만들면 리플렉션 사용에 문제 없고 dynamic도 사용할 수 있다.

 

제너릭은?

타입형 제너릭이 일부 실행할 수 없는 문제가 발생할 수 있다.

 

사용할 수 있는 .NET 표준 라이브러리는?

현재 베이스는 .NET 코어 기준. 여기에 몇 개의 클래스/메소드를 사용할 수 없다.

예를 들면 아래의 것은 사용 불가

DataAnnotations

Microsoft.VisualBasic

WCF

DelegateBeginInvoke/EndInvoke

COM Interop로 VARIANT

DateTime.Parse로 파스 할 수 있는 문자욜에 제약이 있다.

 

그 외 제약은?

구조체 최대 사이즈는 1M Byte

3차원 이상의 다상 배열은 사용할 수 없다.

포인터 타입 배열 사용 불가

 

코드 최적화는?

JIT와 달리 컴파일에 시간이 걸리므로 이런저런 최적화를 해준다. 컴파일러는 C++과 같은 것을 공유하고 있다. 그래서 auto-vectorization도 해 준다.

 

 

 

관련 세션 자료 http://channel9.msdn.com/Events/Build/2014/3-589

공식 사이트 http://msdn.microsoft.com/en-us/vstudio/dotnetnative

MSDN  http://msdn.microsoft.com/en-us/library/dn584397.aspx

FAQ   http://msdn.microsoft.com/en-US/vstudio/dn642499.aspx

 

 

 

출처: http://ufcpp.wordpress.com/2014/04/03/net-native/

 

 

 

 

저작자 표시
신고
by 흥배 2014.04.10 08:00

.NET 플랫폼용 범용 라이브러리.

ActiveRecord, Csv, Command Line Parsing, Configuration, Validation, Logging, Collections, Authentication 등의 기능을 가지고 있다.

닷넷 프레임워크: 4.0 및 3.5 지원


예제

http://commonlibrarynet.codeplex.com/wikipage?title=Examples&referringTitle=Documentation



Logging Example_Logging.cs

스레드 세이프. 단 백 그라운드로 로그를 저장하는 것은 아님.

콘솔, 파일, 데이터베이스에 로그 쓰기 지원.

복수의 로그 저장소를 사용 가능.

로그 레벨 지원.

log4net에 비해 기능은 부족하지만 간단해서 좋음


Account Example_Account.cs

계정 생성, 인증, 변경, 확인을 해주는 라이브러리.

인메모리나 DB 저장소를 지원한다. ADO.NET을 지원하는 DB라면 사용가능 제공하는 클래스를 사용하기 위해서는 'UserRepository' 클래스에 정의된 스키마를 사용해야 한다.

'UserValidator' 클래스를 통해서 계정 데이터 체크를 할 수 있다.

저장소 타입은 'Repository' 폴더에 정의 되어 있다.



Arguments Example_Arguments.cs

CommandLine 인자 파싱.

파싱하여 입력된 인자 값이나 (만약 없다면)default 값을 사용할 수 있다.



Automation Example_Automation.cs

xml에 닷넷으로 만든 Command 클래스를 상속한 클래스를 등록하면 실행 시킬 수 있다.

xml에는 변수 정의도 가능하다.

배치 명령어를 실행할 때 유용 AutoTest 프로그램을 만들 때 사용하면 좋을 듯



Benchmark Example_BenchMark.cs

성능 측정을 할 때 사용한다.

벤치마킹을 실행할 때 이름과 메시지를 지정할 수 있다.

벤치마킹 데이터를 저장하여 리포팅 할 수 있다.

벤치마킹 결과를 콘솔 및 지정한 로거에 출력한다.



BootStrapper Example_BootStrapper.cs

등록한 작업을 프로그램 실행 및 종료 시에 실행한다.

등록한 작업 중 선택적으로 실행할 수 있다.



CodeGenerator Example_CodeGenerator.cs

동적으로 프로퍼티를 가지는 클래스를 만들 수 있다.

CommonLinrary. NET에서 Entity 생성에 사용.

템플릿을 만들어 놓으면 클래스에서 함수도 생성 가능!!



Config Example_Config.cs

설정 정보를 읽는다.

ini 파일 형식과 DB에서 읽기를 지원한다.

복수의 설정 파일을 읽을 수 있다.



Cryptography Example_Cryptography.cs

암호화/복호화.

MD5 해쉬와 DES, 3DES 지원.



CSV, Database Example_Csv.cs Example_Database.cs

csv 형식 파일을 읽고, 쓰기 가능.

ADO.NET을 좀 더 쓰기 편하게 데이터베이스 기능 랩핑 쿼리 데이터 클래스 직력화 기능 제공



Diagnostics Example_Diagnostics.cs

Windows의 작업관리자에서 보여주는 컴퓨터 상태를 파일로 저장해 준다.



Errors Example_Errors.cs

에러를 체계적으로 관리.

복수의 에러를 추가.

에러를 키와 값으로 관리



Extensions Example_Extensions.cs

동적으로 지정된 위치에 있는 lib을 로딩.

클래스를 인스턴스화.



ImportExport Example_ImportExport.cs

문서 데이터를 읽어서 객체로, 객체를 문서 데이터로 변경.

문서 포맷 형식은 xml, csv, ini 지원.

파일로 출력 또는 string으로 출력.



QueueProcessor Example_QueueProcessor.cs

확장성 있는 queue 컨테이너.

큐를 넣은 후 process 호출로 저장된 큐를 처리한다. 기본으로 한번에 5번

큐 처리 함수를 이름을 붙여서 등록, 등록된 함수를 사용할 수 있다.

큐를 추가할 때 처리할 커스텀 타입용 프로세스 함수 추가.

큐 추가 때 호출된 함수를 이름 있는 함수 등록 가능.



Scheduler Example_Scheduler.cs

태스크 스케줄러.

주기적으로, 최대 실행 횟수, 최대 실행 시간을 지정할 수 있다.

QueueProcessor와 연동 가능.

스레드 세이프.

내부 구현은 .NET 라이브러리의 Timer 클래스를 사용. Timer 클래스는 워커 스레드에서 동작한다.



Scripting Example_Scripting.cs

자바스크립트와 비슷한 스크립트 언어를 호스팅 할 수 있다.



저작자 표시
신고
by 흥배 2014.04.03 08:00

  • Method = "GET" 방식은 인자 타입은 string 이어야 하고 "/{id}" 방식이어야 한다.
    • Post 방식에서는 int 타입도 사용할 있다.

신고
by 흥배 2014.03.17 08:00

오픈소스인 Glimpse을 사용하면 ASP.NET MVC의 트레이스나 루트 정보를 쉽게 확인할 수 있다.

설치도 간단하다.

확장을 통해서 redis나 mongoDB 등의 다른 라이브러리의 상태도 확인해 볼 수 있다.

 

공식 사이트 http://getglimpse.com/

 

설치는 NuGet을 사용하여 설치할 수 있다.

 

예) 컨트롤러에 using System.Diagnostics을 추가하고 Index()에 Trace를 추가한다.

public ActionResult Index()

{

   ViewBag.Message = "Welcome to ASP.NET MVC!";

   Trace.Write("Glimpse Demo");

   Trace.TraceWarning("Glimpse Warning Demo");

   return View();

}

 

Ctrl+F5로 실행한다.

 

http://localhost:포트번호/Glimpse.axd에 이동한다.

 

Turn Glimpse On을 클릭한다(원래 페이지로 돌아간 후 오른쪽 하단에 있는 아이콘을 클릭한다(만약 표시되지 않으면 리로드한다).

아래와 같이 다양한 정보가 표시된다.

 

Trace를 클릭하면 소스에 기록한 트레이스가 출력된다.

 

 

web.config 설정을 통해 Azure에 설치된 앱을 원격으로 볼 수도 있다.

 

 

 

참고

http://getglimpse.com/

http://www.hanselman.com/blog/IfYoureNotUsingGlimpseWithASPNETForDebuggingAndProfilingYoureMissingOut.aspx

(일어) http://blogs.msdn.com/b/chack/archive/2013/05/21/glimpse-aspnet-diagnostics-framework.aspx

(일어) http://troushoo.blog.fc2.com/blog-entry-19.html

신고
by 흥배 2014.03.03 08:00
| 1 2 3 4 5 6 7 |