5

테스트 중에 테스트 이메일을 보내는 것과 같이 개발 환경에서 전자 메일을 다르게 보내려합니다. 이메일을 보내기 전에 webconfig 파일에서 응용 프로그램 값을 설정하거나 url을 확인할 수 있음을 알고 있습니다. 이 작업을 수행하는 데 가장 좋은 방법이 무엇인지 또는 더 잘 알지 못하는 다른 옵션이 있는지 알고 싶습니다. 이 주제에 대한 모든 정보는 크게 감사하겠습니다.. NET에서 생산 또는 개발 환경에서 알리는 가장 좋은 방법

답변

3

저는 Preprocessor Directives (in C#)을 사용합니다. VB에서는 Directives이라고합니다. 하나는이 메서드를 호출하고 런타임 중에 있습니다 어디서나 코드에서 다음

public static bool IsDebug() 
{ 
    #if DEBUG 
     return true; 
    #else 
     return false; 
    #endif 
} 

그것은 경우 코드가 Debug (개발)에서 실행되고 있는지 알 나 있습니다 :

는이 같은 도우미 메서드를 그것은 Release 버전 (생산)입니다.

여기에 해당 #If...Then...#Else Directives in (VB).

1

대신 코드를 변경이다, 당신은 왜 필드를 해결하기 위해 관계없이의 당신에게 메일 만에 개발 메일 서버를 설정하지?

코드를 작성하는 것보다 효과적입니다.

+0

감사합니다. 그렇다면 IIS에서 smtp를 설정할 수 있습니다. 전자 메일을 보내는 대신 폴더에 저장하도록 설정할 수도 있다고 생각합니다. – user1572948

1

음, 단지 당신이 생산 무엇을 결정할 수 있습니다 무엇을 개발, 그래서 Web.config의에서 플래그를 확인하지만, 더 우아한 해결책은 이름을 Castle WindsorSpring.Net 알라 Dependency Injection (DI)과 같은 패턴, StructureMap을 포함하고, 것입니다 조금.

DI의 핵심 개념은 런타임시 인스턴스화 할 클래스에 대한 정보를 동적으로 제공하여 구현의 변형을 분리/분리하는 것입니다. 이 경우, 예를 들어, 모든 코드는 '메일'인터페이스 (prod 또는 dev 환경인지 여부를 알지 못함)를 처리하도록 작성되며 DI 프레임 워크를 구성하여 제품의 개발 버전이나 프로덕션 버전을 인스턴스화합니다. 메일 구현 클래스. 구성 매개 변수 값이 드러나지 않고 확산되고 있다는 점에서 조금 깔끔합니다.

물론 거기에는 학습 곡선이 있으므로 프로젝트의이 단계에서는 실용적이지는 않지만 확실히 염두에 두어야 할 것이 있습니다.

1

IIS의 web config inheritance을 사용하면 앱이 배포 된 해당 환경에서 글로벌 컨텍스트 설정을 '상속'할 수 있습니다. 당신의 .NET 응용 프로그램이 설치되어있는 곳의 상위 디렉토리에서

(예 /inetpub/wwwroot.web.config, 또는 루트 Web.config의 ( \Windows\Microsoft.NET\Framework\ver\web.config)를, 특정 설정 환경을 추가 예 : PROD에서

<appSettings> 
    <add key="sendMailTo" value="" /> 
    <add key="environmentName" value="PROD" /> 
    </appSettings> 
DEV에서

<appSettings> 
    <add key="sendMailTo" value="[email protected]" /> 
    <add key="environmentName" value="DEV" /> 
    </appSettings> 

이 환경 컨텍스트 설정 배포되지 않습니다 때마다 당신은 당신의 응용 프로그램을 다시 배포합니다. 또한,이 y로 배포 다른 모든 응용 프로그램을 우리 서버는 이러한 설정을 상속받을 수도 있습니다.

+0

사이트 전체에서 웹 구성 값을 확인하는 데 성능 비용이 있습니까? – user1572948

+0

@ user1572948 AppSettings를 한 번 읽고 캐시하면 추가 성능 향상이 가능합니다. http://stackoverflow.com/questions/1304897/asp-net-web-config-appsettings-performance – StuartLC

+0

정보를 주셔서 감사합니다. 그리고 캐시 된 그것은 내게 문제가되어서는 안된다. – user1572948

관련 문제