2012-07-07 25 views
5

Çok fazla [RequireHttps] olan bazı MVC2 web sitem var.Hata ayıklama sırasında tüm yöntemler için [RequireHttps] nasıl devre dışı bırakılır?

Ancak hata ayıkladığımda bunların birçoğunu farklı yerlerde (denetleyiciler) yorumlamam gerekir. Ve kod hazır olduğunda, tüm yorumları silmem gerekir.

yüzden zaman alır ve bazen [RequireHttps] :)

Sorum bu sorunu çözmek için en iyi uygulamalar hangi olduğu yorumsuz unuttum?

Teşekkür ederiz!

+1

- neden yerinde onlarla debug olamaz? –

+2

hala yerleşik VS web sunucusunu kullanıyorsanız, IIS Express'e geçin ve w/SSL'nin etkin hata ayıklamasını yapabilirsiniz: http://learn.iis.net/page.aspx/901/iis-express-faq/ –

+0

@MichaelEdenfield: Bence yorumunuz cevap olmayı hak ediyor. En iyi cevap bu olabilir.Aslında soruyu cevaplamıyor, ama altta yatan problemi çözebileceğini düşünüyorum. – comecme

cevap

3

Ben #if (C# Reference) kullanmak ve bir hata ayıklama vardı ve yapılandırmasını bırakın ediyorum: Sonra

sen:

#if RELEASE 
    [RequireHttps] 
#endif 
void methodHere() 
{ 
... 
} 
1

kullanın bir #if RELEASE ... #endif yapısı:

#if RELEASE 
    [RequireHttps] 
#endif 
void YourMethod() 
{ 
    ... 
} 
8

size istemiyorsanız her kullanım etrafında #if ifadeleri yazın, hata ayıklama yapılarında no-op olan yeni bir öznitelik ve bu sürümde RequireHttps'un basit bir alt sınıfını oluşturabilirsiniz. ILD:

#if DEBUG 
public class ReleaseRequireHttpsAttribute : Attribute 
{ 
    // no-op 
} 
#elif 
public class ReleaseRequireHttpsAttribute : RequireHttpsAttribute 
{ 
    // does the same thing as RequireHttpsAttribute 
} 
#endif 

Sonra basitçe bulmak ve değiştirme [ReleaseRequireHttps] her [RequireHttps] ve yeni yöntemler için bunu kullanın.

2

şu işlevselliği kadar KURU şekilde dönüp ön işlemci direktifleri Denetleyicilerinizi kirletme gerekliliğini önleyecektir: Bu çözümü için "en iyi uygulamalar" konusunda sorulan yana

public class CustomRequireHttpsAttribute : RequireHttpsAttribute 
{ 
    /* override appropriate method with preprocessor directives */ 
} 

[CustomRequireHttps] 
public ActionResult Foo(string foo) { /* ... */ } 

[CustomRequireHttps] 
public ActionResult Bar(string bar) { /* ... */ } 
4

Sorun, buradaki en iyi uygulama, öznitelikleri yerinde bırakmak ve dağıttığınız kodun aynısını ayıklamaktır. Diğer tüm cevaplar (bunların hepsi işe yarayacaktır) kodun hata ayıklaması yaptığınız anlamına gelir, ardından dağıtmadan önce kodunuzu değiştirirsiniz, bu da asla iyi bir fikir değildir.

Bu durumda, IIS Express kullanıyorsanız, SSL üzerinden web projelerinde hata ayıklamaya yetecek kadar kolaydır. Bu, Visual Studio 2010 web sunucusu için bir drop-in yerine, ancak güvenli HTTP desteği de dahil olmak üzere IIS'nin özelliklerinin çoğunda. Daha fazla bilgi burada bulunabilir:

http://learn.iis.net/page.aspx/901/iis-express-faq/

sonra, IIS Express kullanmak üzere projeler arasında geçiş yapabilirsiniz yüklü kurmak bir https IIS Express yapılandırmasında bağlanması ve normal adım adım.

0

Burada Visual Studio hata ayıklayıcı altında çalışan sürece HTTPS bağlantısı gerektirir özel özelliğin bir çalışma sürümü:

sadece meraktan
/// <summary> 
/// Requires HTTPS connection unless running under Visual Studio debugger. 
/// </summary> 
public class RemoteRequireHttpsAttribute : RequireHttpsAttribute 
{ 
    public override void OnAuthorization(AuthorizationContext filterContext) 
    { 
     if (filterContext != null 
      && filterContext.HttpContext != null 
      && filterContext.HttpContext.Request.IsLocal) 
      return; 

     base.OnAuthorization(filterContext); 
    } 
}