如何在global.asax中连接简单的Web API控制器

时间:2014-03-04 15:52:35

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

我有一个简单的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

假设上面的网址没问题,我无法在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>

1 个答案:

答案 0 :(得分: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