11
votes

Ignoreroute avec Webservice - exclure les URL ASMX du routage

im Ajout du fichier FileVistacontrol à mon application Web ASP.NET MVC.

J'ai une page media.aspx qui est ignorée dans le routage avec p> xxx pré>

ceci fonctionne avec succès et sert une page WebFormes standard. P>

Lors de l'ajout du fichier FileVistacontrol, je n'arrive pas à ignorer aucun appels que le contrôle permet à SERVICEGE. P>

Par exemple, l'ignoreroute suivante semble toujours Soyez ramassé par le MVCHANDLER. P>

'The RouteData must contain an item named 'controller' with a non-empty string value'


1 commentaires

Quelle version de MVC utilisez-vous?


6 Réponses :


1
votes

Avez-vous essayé:

routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
routes.IgnoreRoute("{resource}.asmx/{*pathInfo}");


1 commentaires

Hey, merci pour la réponse, Yeah ive essaya tous les deux. Je peux sembler obtenir le routage pour correspondre à mon URL. J'ai essayé d'ajouter un itinéraire pour l'URL donnée et d'affecter un gestionnaire qui jette une exception mais cela ne semble pas être manipulé. Je pense que c'est quelque chose à voir avec cela étant un fichier physique.



2
votes

Que se passe-t-il lorsque vous utilisez:

routes.IgnoreRoute("FileVistaControl/filevista.asmx");


1 commentaires

Maintenant, il y a quelque chose d'encore mieux que ce parcours de débogueur: Glimpse, qui peut être téléchargé comme un package Nuget et permet de déboguer beaucoup plus que des itinéraires de manière moins intrusive.



2
votes

Essayez ceci:

routes.IgnoreRoute("{*filevista}", new { filevista = @"(.*/)?filevista.asmx(/.*)?" }); 


0 commentaires

0
votes

Cela aiderait si vous avez posté la source de votre configuration de route. Je vais prendre une photo dans le noir et dire pour vous assurer que vos appels ignorés () sont tous en haut de votre définition de routage.

La façon dont Ignoreroute fonctionne consiste à créer un itinéraire qui correspond à l'URL et aux contraintes d'itinéraire ignorés et attache un stoptroutinghandler comme routier. L'URLROUNTMODULE sait qu'un arrêt d'arrêt signifie qu'il ne faut pas acheminer la demande.

Comme nous le savons, les itinéraires sont assortis dans l'ordre desquels ils sont définis. Donc, si votre {contrôleur} / {action} / {id {action} / code> itinéraire apparaît avant votre "filevistacontrol / filevista.asmx / getlanguagefile /" itinéraire, alors il correspondra à la route "{contrôleur} / {action} / {id}" itinéraire.

Je peux être totalement hors de la base ici, mais il est difficile de savoir sans voir votre source. J'espère que cela t'aides. Et code post-source! Vous obtiendrez de meilleures réponses.


0 commentaires

9
votes

Je l'ai eu pour travailler en utilisant ceci (un combo d'autres réponses): xxx


1 commentaires

Croyez-moi: cela échouera si le service Web est à la base de l'application. Ma réponse explique pourquoi cela échouera et comment le faire fonctionner.



17
votes

Réponse courte:

routes.IgnoreRoute( "{*url}", new { url = @".*\.asmx(/.*)?" } );


1 commentaires

Je sais que cette réponse a été postée plus près de l'époque que T-Rex traqua la Terre que la journée actuelle, mais cela m'a signalé dans la bonne direction, donc je l'ai donné un uppote. Cela devrait être la réponse acceptée, mais tel est la vie. L'incroyablement triste est que je cherche cela parce que j'essaie d'ajouter MVC dans une ancienne application WebForms / WebServices ... qui a été écrite de quelques années après avoir posté ceci, donc vraiment Devrait juste avoir été MVC ou quelque chose en premier lieu ... soupir .