在monodevelop vs xsp4中启动应用程序

时间:2014-01-22 16:08:04

标签: asp.net asp.net-web-api mono monodevelop appharbor

我在Linux中使用mono构建了一个ASP.Net WebApi项目。

当我在Monodevelop中启动(调试/发布)应用程序时。应用程序运行没有错误。 示例:我启动(调试/发布)会话。然后我导航到127.0.0.1:9000/api/person/。然后我收到了预期的xml输出。

但是,当我从“bin”目录中执行xsp4服务器时。应用程序启动正常,但是当我转到127.0.0.1:9000/api/person/。 我将结束以下异常

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: /api/person/
Exception stack trace:
at System.Web.StaticFileHandler.ProcessRequest (System.Web.HttpContext context) [0x00000] in <filename unknown>:0 
at System.Web.DefaultHttpHandler.BeginProcessRequest (System.Web.HttpContext context, System.AsyncCallback callback, System.Object state) [0x00000] in <filename unknown>:0 
at System.Web.HttpApplication+ <Pipeline>c__Iterator1.MoveNext () [0x00000] in <filename unknown>:0 
at System.Web.HttpApplication.Tick () [0x00000] in <filename unknown>:0  

我正在使用:

  • Monodevelop 4.1.7
  • 单声道:3.2.7
  • Ubuntu 13.10
  • xsp4:与monodevelop使用的版本相同。
  • bin:使用monodevelop构建项目的已编译二进制文件的位置。

问题

  • 我会错过哪些步骤,monodevelop会自动化?
  • 如何获取高级输出(浏览器或控制台)以识别丢失的文件?
  • 为什么独立的xsp4中缺少文件而不是monodevelop?

此外:在我尝试将应用部署到appharbor之前,我没有注意到这个问题。

1 个答案:

答案 0 :(得分:3)

xsp4应该从Web应用程序目录运行,而不是从bin目录运行。

原因在于ASP.NET体系结构:Web应用程序由主目录(比如webapp)和几个标准目录组成。

让我们只关注bin,其中包含您的网络应用程序引用的已编译程序集。

简单地说,如果您在xsp4目录的范围内运行bin,它将永远无法引用Index.aspx。另一方面,从webapp运行Index.aspx允许服务器从bin目录加载任何所需的程序集