J'ai vu comment vous pouvez ajouter des routes personnalisées à WebForms en utilisant du code comme celui-ci.Puis-je router une URL pour un service Web (ASMX) sur un site ASP.NET MVC?
public class WebFormsRouteHandler : IRouteHandler
{
public string VirtualPath { get; set; }
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
// Compiles ASPX (if needed) and instantiates the web form
return (IHttpHandler) BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof (IHttpHandler));
}
}
Je suis en train de faire quelque chose de semblable au travail, mais pour les fichiers de service Web (TestService.asmx.) Cette méthode précédente jette une exception parce que la page ne hérite pas de IHttpHandler. Je l'ai vu un autre code qui utilise le WebServiceHandlerFactory comme celui-ci
return new WebServiceHandlerFactory().GetHandler(context, requestType, url, pathTranslated);
qui retourne un IHttpHandler comme je l'ai besoin, mais il a besoin d'un HttpContext passé dans mais la seule chose que j'ai accès aussi dans le cadre de RequestContext est un HttpContextBase. De ce que je peux dire, je ne peux pas convertir en HttpContext à partir de ça.
Des idées? Ou peut-être une façon différente de s'y prendre? Ce que j'essaie d'accomplir, c'est de contrôler les URL de mes services Web via le système de routage normal. Un exemple veut que TestService.asmx apparaisse comme ExampleTestService /.
J'obtiens un succès partiel avec ceci. Je peux obtenir mon URL personnalisée pour afficher le service Web, mais cela échoue lorsque j'essaie de l'invoquer. –
Ensuite, votre meilleure chance est de déboguer à travers le code ASP.NET au point où si échoue et découvrez pourquoi ... – chris166