2

我在我的 Web 窗体项目中使用 Web API。我Application_Start在 Global.asax 的项目方法中有以下代码:

GlobalConfiguration.Configuration.Routes.MapHttpRoute("ApiDefault", "api/{controller}/{id}", New With {.id = RouteParameter.Optional})

这基本上是从有关该主题的 Microsoft 教程中复制和粘贴的。

我还有一个名为ValuesController. 此类只是从“添加新项目”向导创建控制器时获得的默认 Web API 控制器,并且位于我的 Web 表单站点中名为的文件夹中Controllers

Imports System.Net
Imports System.Web.Http

Public Class ValuesController
    Inherits ApiController

    ' GET api/<controller>
    Public Function GetValues() As IEnumerable(Of String)
        Return New String() {"value1", "value2"}
    End Function

    ' GET api/<controller>/5
    Public Function GetValue(ByVal id As Integer) As String
        Return "value"
    End Function

    ' POST api/<controller>
    Public Sub PostValue(<FromBody()> ByVal value As String)

    End Sub

    ' PUT api/<controller>/5
    Public Sub PutValue(ByVal id As Integer, <FromBody()> ByVal value As String)

    End Sub

    ' DELETE api/<controller>/5
    Public Sub DeleteValue(ByVal id As Integer)

    End Sub

End Class

但是 - 当我去http://localhost/api/Values- 而不是看到一些 XML 序列化字符串value1value2时,我看到如下错误消息:

<Error>
    <Message>No HTTP resource was found that matches the request URI 'http://localhost/api/Values'.</Message>
    <MessageDetail>No type was found that matches the controller named 'Values'.</MessageDetail>
</Error>

所以 - 显然,路由正在工作,因为我没有收到 404,而是收到一条消息,说路由本身无法解析任何内容。但是该路线应该解决一些问题 - 具体来说,我的ValuesController班级甚至在一个名为Controllers.

有人知道我在做什么错吗?

提前致谢。

4

1 回答 1

1

我想到了。这是因为显然 MVC 要求 Controllers 文件夹与声明路由的文件处于同一级别 - 而不是(正如我之前认为的)只是在根级别。

啊。

于 2012-12-27T23:13:42.300 回答