asp.net-mvc – 在ASP.NET MVC应用程序下将ASP.NET Web API应用
由于各种工程需求,我需要在现有应用程序(名为FooApp)的同一Application域中开发一个新的ASP.NET Web API应用程序(名为BarApp).
我想将ASP.NET Web API应用程序(BarApp)配置为IIS 8.5上现有ASP.NET MVC应用程序(FooApp)下的虚拟目录.尽管许多帖子都谈到了如何配置虚拟目录,但它们都不起作用. 这是配置代码段 <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> 这是网站结构: -FooApp | |--Bin |--View |--Bar (as a virtual directory) | |--Bin |--View 在Foo应用程序中,我配置了路由:为Bar添加所有路径的ingore路由 --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,保留自动生成的一个. 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 } ); } } } 在BarApp中,路由配置被修改为: --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}",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 } ); } } } 但是,上述配置不起作用,忽略路由似乎没有生效. 无法访问Bar的Web API:https://mywebsite.test.com:4433/Bar/api/values Web API库是2.2.1 解决方法
我认为您的方法的问题是尝试在虚拟目录中托管Asp.Net应用程序.相反,您必须添加子应用程序:
然后修改根应用程序的web.config以避免配置冲突: 参考:Disable inheritance in child applications和validateIntegratedModeConfiguration and inheritInChildApplications clash. 这样,您就可以在不修改任何c#代码的情况下访问您的子web api: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 【网页-JQuery插件】【 .Net码农】ASP.NET MVC分页 Ajax+Js
- 使用asp.net和vb.net从sql server导出到excel文件?
- 如何在非MVC ASP.NET应用程序中使用Fine Uploader服务器端
- asp.net-mvc – ASP MVC Preview 5和IIS 6 Windows身份验证
- asp.net – 从EF 6 Code First迁移和多个配置生成完整的SQL
- asp.net-mvc – MVC应用程序调试错误:viewstate MAC的验证
- asp.net-mvc – ASP.Net MVC4将“创建视图”绑定到包含List
- asp.net-mvc-3 – 如何使用Asp.Net MVC 3和Razor具有视图特
- asp.net-web-api – Web API帮助页面上的资源描述显示“无”
- asp.net-mvc – 是否有PRG模式的名称,在验证失败时没有重定