【问题标题】:Only default route working on Azure Mobile App仅适用于 Azure 移动应用的默认路由
【发布时间】:2016-07-21 21:51:12
【问题描述】:

我在 Azure 中创建了一个新的移动应用程序,并下载了启动项目并发布到 Azure。

默认路由/表完美运行,但每当我尝试访问任何新表时,我都会收到“您要查找的资源已被删除、更改名称或暂时不可用。”

我已将新表添加到 dbContext 并发布到 Azure。当我通过 SQL Management Studio 查看数据库时,它们显示在表列表中,因此正在创建表。

 public myAppContext() : base(connectionStringName)
    {
    }

    public DbSet<Member> Members { get; set; }
    public DbSet<ContactMethodType> ContactMethodTypes { get; set; }
    public DbSet<GenderType> GenderTypes { get; set; }
    public DbSet<Group> Groups { get; set; }
    public DbSet<MemberContribution> MemberContributions {get;set;}
    public DbSet<Invitation> Invitations { get; set; }

我已经为与原始示例控制器匹配的新表添加了控制器,但似乎只有该初始路由运行。

using System.Linq;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Controllers;
using System.Web.Http.OData;
using Microsoft.Azure.Mobile.Server;
using myApp.DataObjects;
using myApp.Models;

namespace myApp.Controllers
{
    public class InvitationsController : TableController<Invitation>
    {
    protected override void Initialize(HttpControllerContext     controllerContext)
    {
        base.Initialize(controllerContext);
        myAppContext context = new myAppContext();
        DomainManager = new EntityDomainManager<Invitation>(context, Request);
    }

    // GET tables/Invitation
    public IQueryable<Invitation> GetAllInvitations()
    {
        return Query();
    }

    // GET tables/Invitation/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public SingleResult<Invitation> GetInvitation(string id)
    {
        return Lookup(id);
    }

    // PATCH tables/Invitation/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public Task<Invitation> PatchInvitation(string id, Delta<Invitation> patch)
    {
        return UpdateAsync(id, patch);
    }

    // POST tables/Invitation
    public async Task<IHttpActionResult> PostInvitation(Invitation item)
    {
        Invitation current = await InsertAsync(item);
        return CreatedAtRoute("Tables", new { id = current.Id }, current);
    }

    // DELETE tables/Invitation/48D68C86-6EA6-4C25-AA33-223FC9A27959
    public Task DeleteInvitation(string id)
    {
        return DeleteAsync(id);
    }
}
}

【问题讨论】:

    标签: entity-framework azure mobile xamarin


    【解决方案1】:

    您尝试的是什么 URL,根据文档,您上面的控制器的根目录应该是 https://&lt;server&gt;/tables/Invitations

    https://azure.microsoft.com/en-gb/documentation/articles/app-service-mobile-dotnet-backend-how-to-use-server-sdk/#define-table-controller

    使用 AddTables 扩展方法初始化表控制器。这会在 /tables/ 下为 TableController 的所有子类添加路由。

    【讨论】:

    • 我试图访问那个确切的 URL。成员表 URL 工作得很好(我转换了原始的 todo 类和控制器),但没有其他表工作。您发送的那个链接应该可以解决问题。我不在启动类中调用那个方法,只调用UseDefaultConfiguration()。当我下班回家时会尝试它并标记为已回答,如果它有效。感谢您的帮助!
    • 我已尝试添加该文章中建议的配置更改,但仍然无法正常工作。只有成员控制器起作用。我将更新我的问题以包括控制器和配置设置
    • 圣烟。我的控制器名称中有错字。什么猴子!这就是我工作太晚的后果!无论如何,非常感谢您的帮助。将标记为正确,因为我发现该文章非常有用 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多