我有一个
Asp.net WebAPI 2(.net 4.5)站点在我的本地机器上独立工作,我现在想要在Web表单(.net 4.0)应用程序中“嵌入”虚拟应用程序.
在服务器上,我已经设置了一个新的站点和应用程序池,并在那里配置了API,它运行正常.然后,我在父Web表单应用程序中创建了一个虚拟应用程序,并将其指向同一文件夹位置和应用程序池.
我通过将它包装在location元素中来阻止继承system.web
<location path="." inheritInChildApplications="false">
这解决了我遇到的一些问题,但现在我收到了500错误.我可以看到事件日志:
Exception message: System.Web.Routing.UrlRoutingModule does not
implement IHttpHandlerFactory or IHttpHandler.
我认为这不是实际问题,而是指示配置文件中处理程序映射的问题.我已经完成并为父应用程序中映射的所有处理程序添加了元素,但这还没有解决它.
如果我进入API的web.config并注释掉
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" path="*." verb="*" />
错误消失了,我得到了200响应,但没有来自API的数据,这让我觉得它实际上不知道如何处理请求?
我已经google了很多,无法到达底部或者这个;只是想知道是否有人对这可能是什么有任何建议?
正如我所说,在独立模式下,相同的代码/配置工作正常 – 只有当它嵌套在导致问题的另一个应用程序中时才会让我认为它是配置继承类型问题.
谢谢
解决方法
为什么需要将WebApi作为虚拟应用程序?
将它隔离为IIS中自己的站点更有意义.