发布到服务器时没有路由工作,Web API

时间:2015-10-23 19:40:59

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

当我尝试将我的Web API发布到服务器时,我收到以下消息

“找不到与请求URI匹配的HTTP资源” “没有找到与名为'test'的控制器匹配的类型。”

一切都在本地机器上运行。只是试着让测试控制器工作,然后继续修复其他控制器,这就是为什么我的web API中有其他注册路由。

http://localhost:4159/api/test/1

http://intranetserver/project/api/test/1

这是控制器

Public Class TestController
Inherits ApiController

Public Function GetValue(ByVal id As Integer) As String
    Return "value"
End Function 

这是WebApiConfig.vb




Public Class WebApiConfig

    Public Shared Sub Register(ByVal config As HttpConfiguration)

        config.Routes.MapHttpRoute( _
            name:="DefaultApi", _
            routeTemplate:="api/{controller}/{id}", _
            defaults:=New With {.id = RouteParameter.Optional} _
        )

        '        config.Routes.MapHttpRoute( _
        '    name:="GetVehiclesByDateRange", _
        '    routeTemplate:="api/{controller}/{startDate}/{endDate}" _
        ')

        config.Routes.MapHttpRoute( _
name:="GetImportersByDateTimeRange", _
routeTemplate:="api/{controller}/{startDateTime}/{endDateTime}" _
)

        config.Routes.MapHttpRoute( _
name:="GetPagedData", _
routeTemplate:="api/{controller}/{pageNumber}/{pageSize}" _
)


    End Sub
End Class


这是Global.asax.vb文件中的内容


  Sub Application_Start()

        AreaRegistration.RegisterAllAreas()

        WebApiConfig.Register(GlobalConfiguration.Configuration)
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
        RouteConfig.RegisterRoutes(RouteTable.Routes)
        BundleConfig.RegisterBundles(BundleTable.Bundles)

        CorsConfig.RegisterCors(GlobalConfiguration.Configuration)

        ''NOTE: Remove the Basic Authentication mechanism below to open the service to all calls. And also comment out any  attributes on Controllers.
        GlobalConfiguration.Configuration.MessageHandlers.Add(New BasicAuthMessageHandler() With {.PrincipalProvider = New DummyPrincipalProvider()})

    End Sub


任何想法?

1 个答案:

答案 0 :(得分:0)

问题解决了,华友世纪!

对于我自己而言,它与不匹配服务器上的内容的引用有关。

" API使用程序集解析程序扫描程序集并找出控制器类型"
因此我不断获取

"未找到与名为' test'。'
的控制器匹配的类型。

引自以下帖子

Getting the "no type was found that matches the controller named" error message during Ajax Request

我有一个不同版本的oracle被引用然后在服务器上找到了什么。

因此,您从Web API遇到的消息可能会产生误导。

确保您的.dll引用在生产中与在本地计算机上的引用相同,等等。

希望这可以节省您的时间。