我在asp.net应用程序中获取空指针异常

时间:2016-08-19 11:15:11

标签: c# asp.net nullpointerexception ninject

我正在调试一个asp.net应用程序。它在测试环境中完美运行,但是,我在真实服务器中得到空引用异常。我正在使用ninject。问题出现在我想的ninject中。这是有问题的代码片段:

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);       

    }
}

变量 arac 应该在MasterClass中解决,因为它是父类,所以我不检查null引用问题。

MasterClass是我设置ninject内核的地方。以下是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>();
    }

}

}

它出了什么问题?提前致谢。

Edit-1:这是错误的直观解释: Application Error

1 个答案:

答案 0 :(得分:0)

我刚解决了这个问题。您无法以这种方式设置ninject内核。在asp.net web表单中实现ninject内核在这里表达:

How can I implement Ninject or DI on asp.net Web Forms?