2016-08-19 1 views
0

Je suis en train de déboguer une application asp.net. Cela fonctionne parfaitement dans l'environnement de test, cependant, j'obtiens une exception de référence nulle dans le vrai serveur. J'utilise ninject. Le problème a surgi de ninject I suppose.Here est le fragment de code problématique:Je reçois une exception de pointeur null dans l'application asp.net

public partial class PersonelAylikRapor : MasterClass 
{ 
    protected void btnSorgula_Click(object sender, EventArgs e) 
    { 
     //other codes ommited for brevity 
     DateTime baslangicTarihi = DateTime.MinValue; 

     //arac is null here. 
     baslangicTarihi = this.arac.CevirDateTimea("01." + ddlAy.SelectedValue + "." + ddlYil.SelectedValue);  

    } 
} 

la variable ARAC aurait dû être résolu en MasterClass, car il est la classe de père, donc je ne vérifie pas question de référence null.

MasterClass est l'endroit où j'ai défini le noyau ninject. Voici le contenu de la MasterClass:

public class MasterClass : System.Web.UI.Page 
{ 

IKernel ninjectKernel = null; 
private bool cekirdekKurulduMu = false; 
public IPersonelIsKurali personelik = null;  
public IAraclarTaha arac = null; 
public ITurnikePersonelIsKurali turnikepersonelik = null; 
public IPersonelBirimlerIsKurali personelbirimlerik = null; 
public ITurnikeIslemlerIsKurali turnikeIsKurali = null; 
public IPersonelIliskilendir personelilisiklendirik = null; 
public IBirimlerIsKurali birimlerik = null; 
public IPersonelIzinIsKurali personelizinik = null; 
public IServisIsKurali servisIsKurali = null; 
public FonksiyonSonuc fs = null; 
public List<PersonelKunye> listpersonelkunye = null; 
public List<uint> listgorebilecegipersonelid = null; 

public MasterClass() 
{ 

} 

protected override void OnPreInit(EventArgs e) 
{ 
    try 
    { 
     base.OnPreInit(e); 

     if (this.cekirdekKurulduMu == false) 
     { 

      this.cekirdekKurulduMu = true; 
      this.ninjectKernel = new StandardKernel(); 
      this.ninjectCekirdegiKur(this.ninjectKernel); 
      this.DegiskenlereAta(); 
     } 

    } 
    catch (Exception ex) 
    { 
     IAraclarTaha arac = new AraclarTaha(); 
     FonksiyonSonuc fs = new FonksiyonSonuc(true); 

     fs = arac.HatayiVeritabaninaYaz(ex, OrmanSuTypes.Enums.HataCiddiyetiEnum.OLUMCUL); 

     if (fs.fonksiyonBasariDurumu == false) 
     { 

      throw ex; 
     } 


    } 
} 

private void ninjectCekirdegiKur(IKernel ninjectKernel) 
{ 


    this.ninjectKernel = new StandardKernel(); 
    this.ninjectKernel.Bind<IPersonelBirimlerIsKurali>().To<PersonelBirimlerIsKurali>(); 
    this.ninjectKernel.Bind<IPersonelIzinIsKurali>().To<PersonelIzinIsKurali>(); 
    this.ninjectKernel.Bind<IPersonelIsKurali>().To<PersonelIsKurali>(); 
    this.ninjectKernel.Bind<IAraclarTaha>().To<AraclarTaha>().WithConstructorArgument("debugMode", Araclar.DebugModdaMi()); 
    this.ninjectKernel.Bind<ITurnikeIslemlerIsKurali>().To<TurnikeIslemlerIsKurali>(); 
    this.ninjectKernel.Bind<IBirimlerIsKurali>().To<BirimlerIsKurali>(); 
    this.ninjectKernel.Bind<IPersonelIliskilendir>().To<PersonelIiskilendirIsKurali>(); 
    this.ninjectKernel.Bind<ITurnikePersonelIsKurali>().To<TurnikePersonelIsKurali>(); 
    this.ninjectKernel.Bind<IServisIsKurali>().To<ServisIsKurali>(); 


} 

    public void DegiskenlereAta() 
{ 


    if (this.arac == null) 
    { 
     this.arac = this.ninjectKernel.Get<IAraclarTaha>(); 
    } 
    if (this.personelik == null) 
    { 
     this.personelik = this.ninjectKernel.Get<IPersonelIsKurali>(); 
    } 
    if (this.turnikepersonelik == null) 
    { 
     this.turnikepersonelik = this.ninjectKernel.Get<ITurnikePersonelIsKurali>(); 
    } 
    if (this.personelbirimlerik == null) 
    { 
     this.personelbirimlerik = this.ninjectKernel.Get<IPersonelBirimlerIsKurali>();   
    } 
    if (this.turnikeIsKurali == null) 
    { 
     this.turnikeIsKurali = this.ninjectKernel.Get<ITurnikeIslemlerIsKurali>(); 
    } 
    if (this.personelilisiklendirik == null) 
    { 
     this.personelilisiklendirik = this.ninjectKernel.Get<IPersonelIliskilendir>(); 
    } 
    if (this.birimlerik == null) 
    { 
     this.birimlerik = this.ninjectKernel.Get<IBirimlerIsKurali>(); 
    } 
    if (this.personelizinik == null) 
    { 
     this.personelizinik = this.ninjectKernel.Get<IPersonelIzinIsKurali>(); 
    } 
    if (this.fs == null) 
    { 
     this.fs = new FonksiyonSonuc(true); 
    } 
    if (this.servisIsKurali == null) 
    { 
     this.servisIsKurali = this.ninjectKernel.Get<IServisIsKurali>(); 
    } 

} 

} 

Quel est le problème avec elle? Merci d'avance.

Edit-1: Voici l'explication visuelle de l'erreur: Application Error

+2

Si elle * fonctionne parfaitement dans un environnement de test * que vous décrivez, je parie que le problème est pas avec votre code et il y a une certaine configuration différence entre vos serveurs Web de test et de prod. Je voudrais commencer par là et comprendre ce qui est différent? (Peut-être que le test a un .dll prod ne fait pas ... etc) – mituw16

+0

Quelle est l'exception réelle que vous obtenez? – ArunGeorge

+0

Vous obtenez une référence null ... pas null pointeur .. –

Répondre