Configurer ASP.NET l'API Web de l'application en tant que Répertoire Virtuel sous ASP.NET application MVC

En raison des différentes exigences techniques, j'ai besoin de développer une nouvelle ASP.NET application d'API Web (nommé en tant que BarApp) dans le même domaine d'Application d'une application existante (nommé en tant que FooApp).

Je voudrais configurer un ASP.NET l'API Web application (BarApp) comme un répertoire virtuel dans le cadre d'un ASP.NET application MVC (FooApp) sur IIS 8.5. Bien que de nombreux de nombreux postes parlé de la façon de configurer un répertoire virtuel, aucune de ces travaux.

Voici l'extrait de code de configuration

        <site name="FooApp" id="3" serverAutoStart="true">
            <application path="/" applicationPool="FooApp">
                <virtualDirectory path="/" physicalPath="E:\FooApp" />
                <virtualDirectory path="/Bar" physicalPath="E:\BarApp" />
            </application>
            <bindings>
                <binding protocol="https" bindingInformation="*:34566:" sslFlags="0" />
            </bindings>
        </site>

Voici le site internet de la structure:

-FooApp
|
|--Bin
|--View
|--Bar (as a virtual directory)
    |
    |--Bin
    |--View   

Dans les Foo Application, j'ai configuré le routage: ajouter une ingore itinéraire pour tous chemin avec Bar

--RouteConfig.cs
  namespace FooApp
  {
       public class RouteConfig
       {
          public static void RegisterRoutes(RouteCollection routes)
         {
             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
             routes.IgnoreRoute("{*path}", new { path = @"Bar\/(.*)" });

             routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
             );
         }
   }
}

--WebApiConfig, garder le générés automatiquement.

 namespace FooApp
 {
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            //Web API configuration and services
            //Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
          }
     }
}

Dans le BarApp, le routage configurer est modifié comme:

--RouteConfig.cs
namespace BarApp
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
               name: "Default",
               url: "Bar/{controller}/{action}/{id}",
               defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
         }
     }
}

--WebApiConfig
namespace BarApp
{
   public static class WebApiConfig
   {
       public static void Register(HttpConfiguration config)
      {
        //Web API configuration and services

        //Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "Bar/api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
      }
   }
}

Cependant, la configuration ci-dessus ne fonctionne pas, et l'ignorer route ne semble pas pris en compte.
Impossible d'accéder à la page de la Barre: https://mywebsite.test.com:4433/Bar/
Erreur HTTP 403.14 - Interdit
Le serveur Web est configuré pour ne pas afficher le contenu de ce répertoire.

Impossible d'accéder à l'API Web de la Barre: https://mywebsite.test.com:4433/Bar/api/values
Erreur HTTP 404.0 - introuvable
La ressource que vous recherchez a été supprimée, que son nom ait changé ou est temporairement indisponible.

l'API Web de la bibliothèque est 2.2.1

OriginalL'auteur Innovation Wang | 2014-03-01