mardi 23 février 2016

ASP.NET Configuration Error - Server Error in '/' Application

Vous cherchez à installer un Site Web sur un serveur IIS. A l'exécution de votre nouveau Site Web vous obtenez des erreurs, et ça continue, des erreurs encore et encore. Cette fois, j'ai installé parfaitement mon application sur Windows 7 Pro avec IIS 7.5, elle tourne ! Voici que je tente de faire exactement la même chose sous Windows 2008 R2 avec IIS 7.5 et voici ce superbe résultat :

IIS 7.5 des erreurs encore des erreurs que des erreurs
<httpRuntime maxRequestLength="104857600" />

Cette erreur n'est même pas dans le Web.config de mon application ! Il faut aller voir dans le Web.config du Framework 2.0. Je m'exécute, je vais dans :

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG

Pour modifier le Web.config, je prends garde de faire une copie du fichier et je fourre "2095151" dans le paramètre maxRequestLength.

IIS 7.5 configuration
Notez au passage le nombre de trucs et de machins qu'il faut configurer avec IIS 7.5 ... C'est tout bonnement affolant ! Vertigineux ! Pensez-vous que cela va suffire à faire fonctionner mon site web avec l'IIS de Windows 2008 R2 ? Ce site qui fonctionnait si bien avec l'IIS de Windows 7. Détrompez-vous !

Et BOUM ! Ça pète ailleurs ...

http://pageerreur.aspx/?msg=Failed+to+generate+a+user+instance+of+SQL+Server+due+to+failure+in+retrieving+the+user%27s+local+application+data+path.+Please+make+sure+the+user+has+a+local+user+profile+on+the+computer.+The+connection+will+be+closed.

Pffff, c'est fatiguant !

Chaîne de recherche Google :

SQL Server : Failed+to+generate+a+user+instance+of+SQL+Server+due+to+failure+in+retrieving+the+user%27s+local+application+data+path.+Please+make+sure+the+user+has+a+local+user+profile+on+the+computer.+The+connection+will+be+closed.

Et là, c'est le cauchemar mais je crois que la solution se trouve sur la page suivante de Stack Overflow :

http://stackoverflow.com/questions/4770596/failed-to-generate-a-user-instance-of-sql-server-due-to-failure-in-retrieving-th

Des explications abracadabrantesques !

Resolution for Windows 7 and Windows Server 2008 R2

Tiens, tiens, il y aurait un problème ? Tu m'étonnes !

Et à nouveau : NETWORK SERVICE

Un vrai délire mais je pense bien que la solution est là ...

D'autres explications délirantes, c'est ici :

https://support.microsoft.com/fr-fr/kb/2002980
Là aussi on trouvera certainement la solution une idée de la solution.

Solution pour Windows 2008 R2 - Site Web IIS 7.5 et Visual Studio 2010

Je vais essayer d'expliquer ce qui a fonctionné pour moi. On ne sait jamais trop comment, on ne peut pas non plus expliquer pourquoi, mais je vais vous décrire un peu la solution qui a fonctionnée pour moi :

C'est d'avoir configurer le modèle de processus du pool d'applications avec NetworkService au lieu ApplicationPoolIdentity ...

On prend une grande respiration et on y va. Cela se passe dans l’outil Gestionnaire des Services Internet :

Gestionnaire des Services Internet d'IIS 7.5
Pour faire tourner mon applications, j'ai créé un pool d'application qui tourne avec le framework 2.0. Je dois spécifier dans les "Advanced Settings..." :

IIS 7.5 Advanced Settings du Pool d'applications
que le modèle de processus pour mon Pool d'applications est "NetworkService" et pas "ApplicationPoolentity" !

Choisir pour le Process Model : NetworkService
Et vous trouvez ça normal !? Moi, personnellement, je trouve ça délirant !

Et si vous lisez cet article, s'il vous a aidé, merci de laissez un petit commentaire. Ça me fait toujours plaisir.

Have great fun !

jeudi 4 février 2016

ASP.NET MVC 4 Razor Html.Helpers functions samples

Vous cherchez des exemples d'utilisation des méthodes helpers, vous êtes comme moi. Je pratique ASP.NET MVC depuis des mois, je suis capable de développer de nouvelles fonctionnalités d'installer de déployer un site. Et puis je me rends compte qu'en fait je ne maîtrise même pas totalement une vulgaire liste de boutons radios.

Je suis stupéfait du peu d'exemples que l'on trouve sur Internet, je vais essayer ici, d'y remédier en vous donnant le mien. J'ai mis tu temps à trouver la page suivante dans MSDN :

Rendering a Form in ASP.NET MVC Using HTML Helpers

https://msdn.microsoft.com/en-us/library/dd410596(v=vs.100).aspx
Exemples, un peu intéressant d'utilisation des fonctions Html.Helpers même si ce n'est pas du Razor...

Les autres pages n'ont vraiment aucun intérêt ! Et pourtant, lorsque l'on cherche sur Internet, on retombe toujours dessus ! Par exemple la page :

https://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.radiobutton(v=vs.100).aspx
ne vous apprendra aucunement à utiliser la fonction @Html.RadioButton. Elle n'a aucun intérêt. C'est assez incroyable !

Même le site de StackOverFlow est relativement muet :

http://stackoverflow.com/questions/14313475/how-to-add-a-htmlattributes-in-this-htmlhelper
Un exemple, pas très intéressant ...

http://stackoverflow.com/questions/23382612/set-a-radiobuttonfor-checked-by-default-within-a-foreach-loop
Là c'est intéressant, la remarque de "martennis" est la bonne : Si l'attribut "checked" est présent, peu importe ce qu'il y  dedans ! Le bouton sera coché ! Et comme c'est une radiolist, ce sera le dernier qui sera coché ! Incroyable à croire que cela n'intéresse personne ... ASP.NET MVC est mort et on ne m'a pas prévenu ???

ToBeContinued ...

Concernant la gestion des RadioButton, il y a plein de problèmes mais voici le début d'une solution :

J'ai donc passé un bon moment à triturer ces exemples, à essayer un tas choses qui n'ont pas fonctionnées, pour finalement trouver le début d'une solution.

RadioButton Html Helper Solution

Controller

        public ActionResult PageItems() 
        {
            var items = new List<SelectListItem>
            {
                new SelectListItem { Value = "1", Text = "Blue", Disabled = false },
                new SelectListItem { Value = "2", Text = "Red" },
                new SelectListItem { Value = "3", Text = "Green", Selected = true },
                new SelectListItem { Value = "4", Text = "Yellow", Selected = true },
                new SelectListItem { Value = "5", Text = "Black" }
            };

            return View( items  );
        }

View

@model List<SelectListItem>

<table style="margin:30px;">
@foreach ( var item in Model )
{
<tr>
<td>
@Html.RadioButtonFor( m => item.Text, "name_value" , item.Selected == true ? (object)new { @checked = "checked" } : new { } ) @item.Text
</td>
</tr>
}    
</table>

Voilà donc comment on utilise correctement la paramètre "Object htmlAttributes" pour sélectionner automatiquement le SelectListItem d'une list de Radiobox au démarrage de la page.

Voici le résultat de l'exécution


Enfin un RadioButton issue d'un @Html.Helper avec le bon item "selected"
L'élément "Yellow" de la RadioButton liste est sélectionné à l'init ! Enfin ! Razor c'est la lutte.