【问题标题】:How to wire up simple Web API controller in global.asax如何在 global.asax 中连接简单的 Web API 控制器
【发布时间】:2014-03-04 15:52:35
【问题描述】:

我有一个简单的 Web API(位于 webforms 站点内),可以生成一个简单的“每日提示”。代码如下:

AppCode\TipOfTheDayController.vb

Imports System.Net
Imports System.Web.Http

Public Class TipOfTheDayController
    Inherits ApiController

    Private Function GenerateTip() As TipOfTheDay
        Dim tipCol As New List(Of Tip)
        tipCol.Add(New Tip("Tip Text 01"))
        tipCol.Add(New Tip("Tip Text 02"))
        tipCol.Add(New Tip("Tip Text 03"))
        Dim rnd As New Random
        Dim i As Int16 = rnd.Next(0, tipCol.Count - 1)
        Dim td As New TipOfTheDay
        td.TipString = tipCol(i).TipString
        td.TipNumber = i
        Return td
    End Function

    Public Function GetTip() As TipOfTheDay
        Return GenerateTip()
    End Function

End Class

Public Class Tip

    Public Property TipString As String

    Public Sub New(ts As String)
        Me.TipString = ts
    End Sub

End Class

Public Class TipOfTheDay

    Public Property TipString As String
    Public Property TipNumber As String

End Class

我正在尝试将其连接起来,以便可以使用它来调用它

http://www.mysite.com/api/tips

假设上面的 URL 没问题,我无法在 Global.asax 中弄清楚这一点。我在网上看到了大量示例,但都有一个我不需要的可选“ID”值。谁能告诉我我需要做什么才能从 API 中检索我的随机“提示”?

<%@ Application Language="VB" %>
<%@ Import Namespace="System.Web.Routing" %>
<%@ Import Namespace="System.Web.Optimization" %>
<%@ Import Namespace="System.Web.Http" %>

<script runat="server">
    Sub RegisterRoutes(routes As RouteCollection)
        routes.MapHttpRoute("TipOfTheDay", "api/tips")
    End Sub    
</script>

【问题讨论】:

    标签: asp.net asp.net-web-api asp.net-web-api-routing


    【解决方案1】:

    如果未在路由中指定操作或通过输入 url,路由将在您的控制器上查找索引操作。将您的 GetTip 函数重命名为 Index。

    如果这不可接受,您可以添加类似于以下的路线来代替您当前的路线。

    routes.MapHttpRoute("TipOfTheDay", "api/tips", new { Controller = "TipOfTheDay" Action = "GetTip" });
    

    不过,我不推荐这条路线,因为每次未指定时,它都会尝试使用 GetTip 作为默认操作。

    这是一个很好的在 Web 表单应用程序中进行路由的资源: http://msdn.microsoft.com/en-us/library/dd329551.ASPX

    【讨论】:

    • 嗨。我没有使用 MVC,它只是 Web 表单和 WebAPI。这会影响你的回答吗?
    • 否,因为两者都使用路由框架。我会调整我的答案。
    • 谢谢。不幸的是,它返回一个错误:No HTTP resource was found that matches the request URI 'http://localhost:50895/api/tips'.
    • 没问题。使用更新的路线再试一次。我浏览了您的规范,将 /api/tips 作为 url。
    • 像魅力一样工作,谢谢。也感谢你的文章。希望在我搜索时出现了几个小时:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    相关资源
    最近更新 更多