C# 处理程序映射的嵌套WebAPI问题(继承问题?)

C# 处理程序映射的嵌套WebAPI问题(继承问题?),c#,asp.net,.net,asp.net-web-api,httphandler,C#,Asp.net,.net,Asp.net Web Api,Httphandler,我有一个Asp.net WebAPI 2(.net 4.5)站点在本地计算机上独立工作,现在我想将其作为虚拟应用程序“嵌入”到web窗体(.net 4.0)应用程序中 在服务器上,我设置了一个新的站点和应用程序池,并在那里配置了API,它运行良好。然后,我在父web表单应用程序中创建了一个虚拟应用程序,并将其指向同一文件夹位置和应用程序池 我已通过将system.web包装在location元素中来阻止其继承 <location path="." inheritInChildApplica

我有一个Asp.net WebAPI 2(.net 4.5)站点在本地计算机上独立工作,现在我想将其作为虚拟应用程序“嵌入”到web窗体(.net 4.0)应用程序中

在服务器上,我设置了一个新的站点和应用程序池,并在那里配置了API,它运行良好。然后,我在父web表单应用程序中创建了一个虚拟应用程序,并将其指向同一文件夹位置和应用程序池

我已通过将system.web包装在location元素中来阻止其继承

<location path="." inheritInChildApplications="false">

它修复了我以前遇到的一些问题,但现在我得到了500个错误。我可以查看事件日志:

异常消息:System.Web.Routing.UrlRoutingModule不存在 实现IHttpHandlerFactory或IHttpHandler

我认为这不是实际的问题,而是一个关于配置文件中处理程序映射问题的指标。我已经检查并为父应用程序中映射的所有处理程序添加了元素,但这并没有解决这个问题。 如果我进入API的web.config并注释掉

 <add name="UrlRoutingModule-4.0"
 type="System.Web.Routing.UrlRoutingModule" preCondition="" path="*."
 verb="*" />

错误消失了,我得到了200个响应,但API没有返回任何数据,这让我觉得它实际上不知道如何处理请求? 我在谷歌上搜索了很多东西,但都查不到底;只是想知道是否有人对这可能是什么有任何建议

正如我所说,在独立模式下,相同的代码/配置工作正常——只有当它嵌套在另一个应用程序中时才会导致问题,这让我认为这是配置继承类型的问题


谢谢

为什么需要将WebApi作为虚拟应用程序


在IIS中将其作为自己的站点进行隔离更有意义。

我假设Web表单项目和WebAPI项目都有自己的Web.config。您是否尝试过在WebAPI的web.config中使用该属性,以使其不会继承包含web表单web.config的所有设置?如果将应用程序分开,则更容易维护和改进。您可以将webapi的使用限制为仅接受来自webform应用程序的请求。为什么需要嵌入?