2013-07-02 22 views
7

aşağıdaki kontrolörü ile bir MVC4 web uygulaması varAllowAnonymous neden Azure Web sitelerine dağıtılırken çalışmıyor?

[Authorize] 
public class AccountController : BaseController 
{ 
    [AllowAnonymous] 
    public ActionResult SignInRegister(LoginModel loginModel, string returnUrl) 
    { 
    //some implementation 
    } 
    //other secured actions 
} 

Bu çalışma yerel olarak çalışan, ancak beklendiği gibi kısa sürede ben mesaj ile bir 401 hata kodu almak Ücretsiz Azure web sitesine dağıtmak olarak: You do not have permission to view this directory or page.

[Authorize] özniteliğinin kaldırılması ve yeniden renklendirilmesi beklendiği gibi çalışır, tekrar eklenir ve yeniden renklendirmek sorunu geri getirir.

Aynı sonuçlarla tam olarak nitelenmiş sınıf adlarını bile denedim: System.Web.Mvc.Authorize ve System.Web.Mvc.AllowAnonymous.

Uygulama .NET 4.5 kullanıyor ve Azure Web Sitesi de 4.5 kullanacak şekilde yapılandırıldı.

Update: BaseController Header [AllowAnonymous] dekore değildi olarak kısmi görünümüdür döndüren bir etkiye sahiptir. Yerel olarak, sayfanın başlık olmadan görüntülenmesiyle sonuçlandı, ancak Azure Web Sitelerinde yanıt kesildi ve yalnızca yukarıda belirtilen hata iletisiyle döndü. Başlığı tamamen araştırıncaya kadar başlığın eksik olduğunu fark etmemiştim.

Şimdi soru sorulmaya başlıyor: Neden Azure Web siteleri yanıtı geçersiz kılıyor?

+2

Güncellemenizi yanıt olarak göndermelisiniz. – Kyle

cevap

4

BaseController, Header'ı [AllowAnonymous] ile dekore edilmeyen kısmi görünüm olarak döndüren bir eylem gerçekleştirir. Yerel olarak, sayfanın başlık olmadan görüntülenmesiyle sonuçlandı, ancak Azure Web Sitelerinde yanıt kesildi ve yalnızca yukarıda belirtilen hata iletisiyle döndü. Başlığı tamamen araştırıncaya kadar başlığın eksik olduğunu fark etmemiştim.

Şimdi soru sorulmaya başlıyor: Neden Azure Web siteleri yanıtı geçersiz kılıyor?

+0

Bu bana yardımcı oldu. Düzenler vb. Için kısmi görünümler dahil olacaksanız, bunların [AllowAnonymous] olarak işaretlenmesi gerekir. – Ant

2

Tam olarak aynı soruna sahiptim ve Jonas'ın güncellemesi gibi, Kısmi Görünümleri döndüren ve [Yetkilendir] özelliğine sahip olan Eylemler'e dikkat etmeniz gerekiyor.

Yapmanız gereken, [Authorize] özniteliğini kaldırmaktır ve işleminizin kullanıcının düzgün bir şekilde doğrulanması için kimliği doğrulanması gerekiyorsa, kodunuzun yetkisiz durumdan sorumlu olmasını sağlayın.

Örneğin, sayfanız şu anda oturum açmış olan kullanıcının adını bir Kısmi aracılığıyla görüntüler. Şu anda oturum açmış olan kullanıcının müsait olmaması durumunda eyleminizin boş bir dize veya başka bir şey göstermesini sağlayın.

1

Eğer varsa web.config kontrol

<authorization> 
    <deny users="?" /> 
</authorization> 

Onun geçersiz [AllowAnonymous]

web.config bölümüne ekleyin:

<location path="YourController/AnonymousMethod"> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
    </location> 

AnonymousMethod

anonim erişime izin vermek için
İlgili konular