我在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
我正在使用:
问题:
此外:在我尝试将应用部署到appharbor之前,我没有注意到这个问题。
答案 0 :(得分:3)
xsp4
应该从Web应用程序目录运行,而不是从bin
目录运行。
原因在于ASP.NET体系结构:Web应用程序由主目录(比如webapp
)和几个标准目录组成。
让我们只关注bin
,其中仅包含您的网络应用程序引用的已编译程序集。
简单地说,如果您在xsp4
目录的范围内运行bin
,它将永远无法引用Index.aspx
。另一方面,从webapp运行Index.aspx
允许服务器从bin
目录加载任何所需的程序集