When working with ASP.NET WebApi you might get following error:
  122      
{"ExceptionType":"System.NullReferenceException","Message":"Object reference not set to an instance of an object.","StackTrace":"\u000d\u000aServer stack trace: \u000d\u000a   at System.Web.Http.ValueProviders.Providers.RouteDataValueProvider.GetRoutes(IHttpRouteData routeData)\u000d\u000a       
d2       
   at System.Web.Http.ValueProviders.Providers.RouteDataValueProvider.<>c__DisplayClass2.<.ctor>b__0()\u000d\u000a   at System.Lazy`1.CreateValue()\u000d\u000a\u000d\u000aException rethrown at [0]: \u000d\u000a       
143       
   at System.Web.Http.ValueProviders.Providers.RouteDataValueProvider.GetRoutes(IHttpRouteData routeData)\u000d\u000a   at System.Web.Http.ValueProviders.Providers.RouteDataValueProvider.<>c__DisplayClass2.<.ctor>b__0()\u000d\u000a   at System.Lazy`1.CreateValue()\u000d\u000a   at System.Lazy`1.LazyInitValue()\u000d\u000a       
14f       
   at System.Web.Http.ValueProviders.Providers.NameValueCollectionValueProvider.GetValue(String key)\u000d\u000a   at System.Web.Http.ValueProviders.Providers.CompositeValueProvider.<>c__DisplayClass9.<GetValue>b__4(IValueProvider provider)\u000d\u000a   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\u000d\u000a       
10f       
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\u000d\u000a   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\u000d\u000a   at System.Web.Http.ValueProviders.Providers.CompositeValueProvider.GetValue(String key)\u000d\u000a       
90       
   at System.Web.Http.ModelBinding.Binders.TypeMatchModelBinder.GetCompatibleValueProviderResult(ModelBindingContext bindingContext)\u000d\u000a       
a2       
   at System.Web.Http.ModelBinding.Binders.TypeMatchModelBinderProvider.GetBinder(HttpActionContext actionContext, ModelBindingContext bindingContext)\u000d\u000a       
12c       
   at System.Web.Http.ModelBinding.Binders.CompositeModelBinder.<>c__DisplayClass6.<GetBinder>b__1(ModelBinderProvider provider)\u000d\u000a   at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()\u000d\u000a   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\u000d\u000a       
f0       
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)\u000d\u000a   at System.Web.Http.ModelBinding.Binders.CompositeModelBinder.GetBinder(HttpActionContext actionContext, ModelBindingContext bindingContext)\u000d\u000a       
9a       
   at System.Web.Http.ModelBinding.Binders.CompositeModelBinder.BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)\u000d\u000a       
a2       
   at System.Web.Http.ModelBinding.DefaultActionValueBinder.BindParameterValue(HttpActionContext actionContext, HttpParameterBinding parameterBinding)\u000d\u000a       
103       
   at System.Web.Http.ModelBinding.DefaultActionValueBinder.<>c__DisplayClass1.<BindValuesAsync>b__0(RequestContentReadKind contentReadKind)\u000d\u000a   at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass38.<ToAsyncVoidTask>b__37()\u000d\u000a       
76       
   at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)"}     
0
  This error is caused by routing initialization like following one:
    routes.MapHttpRoute(
                  name: "GetAccountData2",
                  routeTemplate: "api/{controller}",
                  defaults: new AccountData()
              );
   
  To fix it change routing initialization like shown below:
     routes.MapHttpRoute(
                  name: "GetAccountData2",
                  routeTemplate: "api/{controller}",
                  defaults: new AccountData { Roles = new List<string>() , UserName = "" } 
              );
   
  Notice the difference “{ Roles = new List<string>() , UserName = "" } “
		    
            
	        Posted
		    
Feb 26 2012, 02:31 AM
			by
		    
Damir Dobric