2010-11-09 5 views
1

Je suis la même question éprouvais comme décrit ici: http://forums.asp.net/t/1023591.aspxASP.NET - Thème Désactiver pour WebService

J'ai un thème de la page par défaut définie dans l'élément <pages /> du web.config racine, qui, en plus de la reste du site Web, est en cours d'application sur les pages WebService .ASMX. Je voudrais empêcher ASP.NET d'appliquer les thèmes aux pages .ASMX.

La réponse dans la discussion ci-dessus indique que vous pouvez modifier 'DefaultWsdlHelpGenerator.aspx' dans le dossier racine du framework .NET de configuration (C: \ Windows \ Microsoft.NET \ Framework \ \ CONFIG \ DefaultWsdlHelpGenerator.aspx) et spécifiez <%@ Page Theme="" %> , mais cela ne fonctionne que si vous êtes en mesure d'accéder à ce fichier sur le serveur.

J'ai essayé d'ajouter un élément <location /> au fichier web.config qui pointe sur un fichier .ASMX spécifique, mais cela semble être ignoré car la page .ASMX est toujours à thème.

Existe-t-il un moyen d'empêcher ASP.NET d'appliquer des thèmes d'application aux fichiers .ASMX qui fonctionne sans modifier le niveau "DefaultWsdlHelpGenerator.aspx" (mentionné ci-dessus) au niveau du système?

Modifier

Je suis en mesure de contourner ce problème en permettant à mon type de page de base pour définir le thème appliqué, mais même malgré ma solution, je me demande s'il y a une façon « correcte » pour remplacer cette comportement plutôt ridicule dans ASP.NET.

Répondre

0

Si les fichiers .asmx ne se trouvent pas à la racine du site Web, ne pouvez-vous pas simplement ajouter un autre fichier web.config dans leur dossier et y supprimer le thème?

+0

En théorie, cela fonctionnerait, oui. Cependant, dans cette application, les fichiers .ASMX sont à la racine. Je suis à la recherche d'une solution qui exclut de changer l'emplacement physique de tous les fichiers. –

1

Que diriez-vous de supprimer la ligne du web.config et d'ajouter une ligne à votre page de base (j'espère que vous en avez un), qui définit votre thème par défaut. Si vous voulez toujours gérer via web.config, vous pouvez ajouter une entrée appSettings pour cette valeur de thème.

Exemple:

protected override void OnPreInit(EventArgs e) 
    { 
     base.OnPreInit(e); 
     this.Theme = <Enter Your Theme Here>; 
    } 
+0

En effet, c'est la solution que j'utilise, mais je trouve juste assez étrange qu'ASP.NET se comporte de cette façon considérant qu'on ne voudrait jamais que leurs styles spécifiques à une application soient appliqués à un template généré pour une non-page. –

0

Notez que les fichiers .asmx ne sont pas des "pages" dans tous les sens. Les placer dans un dossier soumis à une directive qui prend une action "pour toutes les pages" n'est pas approprié. Soit prendre la suggestion de Zachary, ou celle de James Gaunt.

Ou, mieux encore, arrêtez d'utiliser ASMX et passez à WCF.

+0

En dépit du fait que les fichiers .asmx ne sont pas des pages, il s'agit d'un élément de niveau racine '' qui provoque le comportement en premier lieu. J'aurais pensé qu'à tout le moins je pourrais le remplacer par ''. –