2012-07-20 2 views
2

J'ai une application MVC2 qui inclut également une partie Non MVC (pages Asp.Net normales de 3,5 pages).Accéder à Webservice depuis Asp.net MVC

J'appelle webservice (pas WCF) de pages non MVC pour remplir les compléments d'autocomplétion.

Les pièces MVC et les pièces non-MVC fonctionnent correctement dans ma machine de développement.

Lorsque j'héberge mon application dans IIS, je ne peux pas accéder aux méthodes web de mon service web. J'ai vérifié avec firebug qu'il retourne

The controller for path '/payroll/WS/MVCArch.asmx/JqUiGetEmp' was not found or does not implement IController. ' 

Ici mon nom de répertoire virtuel est Paie. et mes pages Non MVC sont situées sous un dossier appelé "RepDocs" qui est sous la racine de l'application. Mon dossier Webservice "WS" est également sous la racine de l'application. La requête a été envoyée à partir d'une page non mvc sous le dossier "RepDocs".

Comment se fait le même code fonctionne dans VSHOST et pas dans IIS (XP sp3)? Ai-je raté quelque chose?

Aidez-nous s'il vous plaît.

EDIT

J'ai modifié mon global.asax pour exclure les routes comme suivre

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.IgnoreRoute("favicon.ico"); 
routes.IgnoreRoute("WS/{resource}.asmx/{*pathInfo}"); 
//routes.IgnoreRoute("{*allasmx}", new { allasmx = @".*\.asmx(/.*)?" }); 
routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
); 

Maintenant, je reçois cette erreur

The HTTP verb POST used to access path '/Payroll/ws/MVCArch.asmx/JqUiGetOffice' is not allowed. 

j'ajouté ce qui suit sur le Web. config

<webServices> 
    <protocols> 
     <add name="HttpGet"/> 
     <add name="HttpPost"/> 
     </protocols> 
</webServices> 

Toujours pas de chance.

+0

Votre chemin est probablement mauvais pour le déploiement. Voir http://blogs.msdn.com/b/rickandy/archive/2011/04/22/test-you-asp-net-mvc-or-webforms-application-on-iis-7-in-30-seconds .aspx - – RickAndMSFT

+0

J'ai vérifié avec le chemin et wsdl renvoie correctement ce qui signifie que mon service est opérationnel. Les pages sont affichées correctement. La seule chose qui ne fonctionne pas est une requête ajax à mon service. en quelque sorte la requête finit avec le contrôleur qui ne devrait pas être comme la demande provient de la page non mvc. – Deb

Répondre

2

Vous devez ignorer la route vers le service Web dans Global.asax.cs

routes.IgnoreRoute("{*allasmx}", new {[email protected]".*\.asmx(/.*)?"}); 
+0

Après avoir utilisé votre suggestion, j'obtiens System.Web.HttpException: Le verbe HTTP POST utilisé pour accéder au chemin '/payroll/ws/MVCArch.asmx/JqUiGetOffice' n'est pas autorisé. – Deb

Questions connexes