Bug 36348 - ConfigurationManager,AppSettings throws NullReferenceExcpetion from WebConfigurationHost.InitForConfiguration
Summary: ConfigurationManager,AppSettings throws NullReferenceExcpetion from WebConfig...
Status: NEW
Alias: None
Product: Class Libraries
Classification: Mono
Component: System.Web (show other bugs)
Version: 4.2.0 (C6)
Hardware: PC Linux
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2015-11-30 06:03 UTC by jamie_venning
Modified: 2015-11-30 06:12 UTC (History)
1 user (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description jamie_venning 2015-11-30 06:03:47 UTC
A NullReferenceException is thrown from WebConfigurationHost.cs:196 (https://github.com/mono/mono/blob/master/mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationHost.cs).
This is due to WebConfigurationManager.FindWebConfig("/") returning null, which is then dereferenced in WebConfigurationHost.

Under Microsoft's .Net, the below does not crash.

To reproduce:
Create a .cs file with:
using System;
using System.Configuration;
using System.IO;
using System.Web;

namespace Test {
class Program {
    static void Main(string[] args) {
        HttpContext.Current = new HttpContext(new HttpRequest("", "https://example.org/Foo", ""), new HttpResponse(new StringWriter()));
        var x = ConfigurationManager.AppSettings;
    }
}
}

Run "mcs /reference:System.Configuration.dll /reference:System.Web.dll Your.cs && mono Your.exe"

Ubuntu
mono --version -> 4.2.1.102/6dd2d0d
Comment 1 jamie_venning 2015-11-30 06:12:00 UTC
My mistake, looks like this is a duplicate of https://bugzilla.xamarin.com/show_bug.cgi?id=24308.

I didn't notice it due to my search being too specific.
In my case, the problem was WebConfigurationManager.FindWebConfig returning a null value, which is then passed into WebConfigurationHost.InitForConfiguration, which is called as (null, out a, out b, ., new object[] { null, null, null, null, null, null, false }), which then causes it to dereference the null value.

Additionally, I noticed that WebConfigurationManager.OpenWebConfiguration has a check 'if(!fweb && !String.IsNullOrEmpty(path))' on line 260, which is redundant because on line 256 path is checked for IsNullOrEmpty and set to "/".

Note You need to log in before you can comment on or make changes to this bug.