ASP.当使用XSP/Mono托管时,NetWebAPI不能与Owin一起使用



我正在尝试使用具有ASP .net Web APIOwin组件的mono运行一个项目(请参阅此处的解决方案)。项目成功构建。然而,当我到达端点http://127.0.0.1:6666/customers时,我得到了以下错误。

System.Web.HttpException  
The resource cannot be found.
Description: HTTP 404.The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is  temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Details: Requested URL: /customers
Exception stack trace:
at System.Web.StaticFileHandler.ProcessRequest (System.Web.HttpContext context) [0x000a1] in /builddir/build/BUILD/mono-4.4.0/mcs/class/System.Web/System.Web/StaticFileHandler.cs:77 
at System.Web.DefaultHttpHandler.BeginProcessRequest  (System.Web.HttpContext context, System.AsyncCallback callback, System.Object state) [0x00098] in /builddir/build/BUILD/mono-4.4.0/mcs/class/System.Web/System.Web/DefaultHttpHandler.cs:101 
at System.Web.HttpApplication+<Pipeline>c__Iterator1.MoveNext () [0x00d9c] in /builddir/build/BUILD/mono-4.4.0/mcs/class/System.Web/System.Web/HttpApplication.cs:1335 
at System.Web.HttpApplication.Tick () [0x00000] in /builddir/build/BUILD/mono-4.4.0/mcs/class/System.Web/System.Web/HttpApplication.cs:927 

然而,CustomersController.Get()端点被正确调用,这意味着框架能够转到正确的控制器。但一些不好的事情发生在终点之后。

注意:值得一提的是,正常的ASP .Net Web API项目(没有OWin)运行良好。在OWin集成时,问题仅为

我正在使用:

Mono JIT编译器版本4.4.0
单显影5.10
请参阅packages.config了解Nuget软件包的版本
这是WebApiConfig.cs
这是CustomerController.cs
这是Web.config

如果您想尝试一下,请引用/提取代码并将其导入monodevelopment。

我试着在windows中运行这个解决方案,它在那里运行得很好
我不知道这种行为的原因。如果有人能给我一些建议来解决这个问题,那将非常有帮助。

如果你绝对需要在XSP上运行你的应用程序,那么我没有适合你的解决方案,对不起。我开始阅读Mono的系统源代码。网状物HttpApplication试图理解为什么静态文件处理程序会处理请求,但如果不使用调试器,这是一项不可能完成的任务。

但是,如果您只需要在Mono上运行Web API应用程序,那么有一个非常简单的解决方案。由于您已将应用程序转换为OWIN,因此可以使用OwinHost.exe(来自OwinHost NuGet包)而不是xsp4.exe来托管应用程序。这对我使用Mono 5.4.1.7/OwinHost 3.1.0/Microsoft来说效果很好。AspNet。操作系统X 10.11.6上的WebApi 5.2.3。

OwinHost文档摘录:

启动OwinHost:
使用OwinHost自托管OWIN应用程序就像从Web应用程序的项目目录中运行OwinHost.exe一样简单。项目目录在此处定义为的父目录/bin,其中包含应用程序的程序集以及选定的服务器程序集。默认情况下,当在没有其他参数的情况下运行OwinHost.exe时,主机将尝试定位并加载应用程序的启动类和OWIN HttpListener服务器。在启动类的帮助下构建OWIN管道之后,它将开始侦听端口5000。所有这些默认行为都可以使用OwinHost.exe的参数轻松更改,如下所述。

OwinHost参数:
有多种方法可以自定义OwinHost的默认行为。例如,要选择与OWIN兼容的备用服务器,请运行以下命令:

OwinHost.exe-s<风俗服务器装配>

选项的完整列表可以通过运行来查看:

OwinHost.exe/?

最新更新