O víkendu jsem prováděl aktualizaci webu www.epskuryr.cz, který je postaven na CMS DotNetNuke (DNN) na poslední verzi 07.00.03. Aktualizaci jsem prováděl hlavně z důvodů, že ve verzích DNN 6 (web používal 6.02.02), je chyba, kdy se špatně reprezentují desetinná čísla na jiném než anglickém národním nastavením. Při správě některých modulů to dokonce způsobuje chybu System.FormatException: Input string was not in a correct format.
Při aktualizaci se vyskytly některé problémy, z nich jsou některé způsobené tím, že na webu máme doprogramovány některé vlastní moduly a doplňky. Zde uvádím jejich popis a řešení.
Framework 4.0
Pokud DNN web provozujete ještě na verzi .NET Frameworku 2.0, změňte ho před aktualizací na FW 4.0. Nová verze DNN 7 již FW 2.0 nepodporuje.
Server Error in '/' Application
Po nahrání souborů aktualizačního balíčku (DotNetNuke_Community_07.00.03_Upgrade.zip) web vůbec nenajel, byla zobrazena chyba konfigurace:
Server Error in '/' Application
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately.
Parser Error Message: This method cannot be called during the application's pre-start initialization stage.
Source Error:
<add name="RemoteIMPSecurityMembershipProvider" type="IMP.EPSWeb.RemoteIMPSecurityMembershipProvider" connectionStringName="ConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" generatedPasswordLength="6" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0" enableTrustedAuthentication="false" applicationName="/EPSWeb" securityInfoAssembly="EPSWebService" securityInfoResourceName="" />
</providers>
RemoteIMPSecurityMembershipProvider je náš vlastní MembershipProvider, který web používá.
Chybu jsem odstranil tím, že v adresáři bin webu jsem smazal soubory WebMatrix.Data.dll a WebMatrix.WebData.dll, které aktualizace přidává pro razor. Poté web naběhl a standardně nabídl aktualizační proces, který bez problému proběhl.
CheckBox a RadioButton styly
Nová verze DNN 7 má změněný vzhled administrace a s tím i vzhled kontrolů CheckBox a RadioButton Tyto kontroly ale využíváme na webu i ve vlastních DNN modulech, kde nechceme, aby se jejich vzhled změnil (protože v tomto změněném vzhledu jsou kontroly zároveň větší a to způsobilo rozpadnutí formulářů).
Dohledal jsme patřičný javascript (dnn.jquery.js), který tento vzhled mění. Z něho jsem zjistil, že pokud se kontrolům uvede CSS styl s názvem normalCheckBox nebo normalRadioButton, nebude změna vzhledu aplikována. Provedl jsme tedy úpravu kontrolů v ASP.NET takto:
<asp:CheckBox runat="server" CssClass="normalCheckBox" Text="Do vlastních rukou" ...
<asp:RadioButtonList runat="server" CssClass="normalRadioButton" ...
Poté jsem našel i popis tohoto problému zde.
Validatory DNN formulářů
Nový DNN 7 mění zobrazení validátorů (například asp:requiredfieldvalidator) na zobrazení pomoci červeného tooltipu (bubliny). U mě se ale validátory zobrazovali nečitelně červenou barvou na červeném podkladě tooltipu.
Problém je způsoben rozdílným renderováním validačních kontrolů v .NET 3.5 a .NET 4.0. My jsme na webu měli ve Web.config souboru převodem na FW 4.0 nastaveno controlRenderingCompatibilityVersion="3.5" u elementu Pages. To způsobilo renderování vždy červeným textem (pomoci inline stylu style="color: red; display: inline;"). Po odstranění controlRenderingCompatibilityVersion již není tento styl u kontrolu přidáván a validátory jsou zobrazeny správně bílou barvou nastavenou ve stylu DNN pro tooltip. Na některých místech ve vlastních formulářích jsem musel nastavit zpět zobrazení červenou barvou.