2010-08-27 20 views
8

Ben aşağıdaki öznitelik oluşturdukÖzel CodeAccessSecurityAttribute

[OperationPermission(SecurityAction.Demand, Roles.Administrator, "UserService", "Remove")] 
    public void Add(User user) 
    { 
     user.ValidateOrThrow(); 
     _repository.Add(user); 
    } 

kod çalıştırma bana aşağıdaki hatayı veriyor:

gerekli Eksik yapıcı. (HRESULT özel durum: 0x8013143B), bir COMException.

neden yeryüzünde alıyorum ve gerçekten ne anlama geliyor?

+0

'Roles.Administrator' ı tanımıyorum. Bunu .NET 4.0'da çalıştırmaya mı çalışıyorsunuz? CAS kullanımdan kaldırıldı. –

+0

Kendi rolleri olan statik bir sınıf. – jgauffin

+0

CAS yerine ne kullanmalıyım? – jgauffin

cevap

0

Ben yapıcı çağrı ToString()

public OperationPermissionAttribute(SecurityAction action, Roles role, ... 

veya yapmak (bu durumda siz de birkaç başka şeyleri değiştirmek gerekir) Roles için String den role için yapıcı parametre tipini değiştirecek ya:

[OperationPermission(SecurityAction.Demand, Roles.Administrator.ToString(), "UserService", "Remove")] 

İlk seçeneği kişisel olarak tercih ederim.

+0

Kendi özel rollerimizi kullanıyoruz, dolayısıyla dizelerin kullanımı. Ama bu benim hatamın sebebi değil mi? – jgauffin