首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Web api接口在本地工作,但不能在Azure上工作

Web api接口在本地工作,但不能在Azure上工作
EN

Stack Overflow用户
提问于 2013-01-24 13:37:00
回答 1查看 2.5K关注 0票数 16

我的情况非常类似于this question,但由于他没有得到答案,我想我应该抛出一些更多的输入。

一切都在本地正常工作(在VS嵌入式服务器上)。当我部署到Azure时,我得到了一个404错误,并伴随着“找不到与名为的控制器匹配的类型...”。

然而,当我加载routedebugger模块时,即使在Azure上映射看起来也没问题。

我能做些什么来调试这个问题?

谢谢,

亚历克斯

编辑:我的路由是这样创建的:

代码语言:javascript
复制
            GlobalConfiguration.Configuration.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            };
            GlobalConfiguration.Configuration.Routes.MapHttpRoute(
                name: "ActionApi",
                routeTemplate: "api/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

编辑2:这里是我的控制器类

代码语言:javascript
复制
    public class EmployeeController : ApiController
{
    // GET api/<controller>
    public IEnumerable<Employee> Get()
    {
        using (var context = new nws())
        {
            return context.Employees;
        }
    }

    // GET api/<controller>/5
    public Employee Get(int id)
    {
        using (var context = new nws())
        {
            return context.Employees.FirstOrDefault(e => e.ID == id);
        }
    }

    // GET api/<controller>/getbyatid/5
    public Employee GetByAtId(string id)
    {
        using (var context = new nws())
        {
            return context.Employees.FirstOrDefault(e => e.AtUserID == id);
        }
    }

    // POST api/<controller>
    public void Post([FromBody]string value)
    {
    }

    // PUT api/<controller>/5
    public void Put(int id, [FromBody]string value)
    {
    }

    // DELETE api/<controller>/5
    public void Delete(int id)
    {
    }

    // GET api/<controller>/timebank/5
    public int? GetTimeBank(string id)
    {
        using (var context = new nws())
        {
            var employee = context.Employees.FirstOrDefault(e => e.AtUserID == id);
            if (employee != null)
                return employee.GetTimeBank();
            return null;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 23:05:14

切换路由顺序,然后重试。

代码语言:javascript
复制
        GlobalConfiguration.Configuration.Routes.MapHttpRoute(
            name: "ActionApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        GlobalConfiguration.Configuration.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14494678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档