Why does ResourceManager.GetResourceSet return null on the first request after a build? (C#)
Asked Answered
K

1

20

I'm working on a large-ish web application built in C# (asp.net). I've got a simple aspx page that serves localized strings to the client browser for use in javascript controls. To get the strings, I do the following:

ResourceManager _resources = new ResourceManager(_pathname, typeof(ARM).Assembly);
ResourceSet rs = _resources.GetResourceSet(culture, false, false);

//loop through rs and write the keys & values out to the client in plaintext

This all works fine, except for the first request to the page immediately after a Clean/Build or a Rebuild (if I simply make some changes, then Build, it works fine). So on the first request I get a null reference exception when I try to iterate the ResourceSet. If I refresh the page after the error, however, it works fine from then on.

Does anyone know why this might be happening?

Kaltman answered 29/10, 2009 at 20:9 Comment(0)
A
54

Second param "createIfNotExist" of the method GetResourceSet has to be true, that tells ResourceManager to load the ResourceSet if not yet loaded.

ResourceSet rs = _resources.GetResourceSet(culture, true, false);
Astrict answered 28/12, 2009 at 18:53 Comment(4)
Nice answer, the createIfNotExists put me on the wrong foot. (Perhaps Microsoft should think of renaming the parameter name, loadIfNotPresent)Halogen
We have a #TenYearsChallenge here. In 2009 the second parameter was createIfNotExist, In 2019 the second parameter is createIfNotExist !!! wasted two complete days on this naming convention ...Ipecac
Argh the pain! Thanks for this - Mircosofts really need to change this paramater name!Nnw
Amazing how this name is still an issue in .NET 7, thanks for this answer. The default naming is atrocious! 🤣Oulu

© 2022 - 2024 — McMap. All rights reserved.