发布Azure移动服务并不起作用

时间:2014-11-19 09:17:21

标签: c# azure azure-mobile-services

我有一个Azure移动服务,可在本地完美运行,并已使用Fiddler进行了全面测试。我设置参考处理以避免自引用循环

WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register()
    {
        // Use this class to set configuration options for your mobile service
        ConfigOptions options = new ConfigOptions();

        // Use this class to set WebAPI configuration options
        HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));

        JsonConvert.DefaultSettings = () => new JsonSerializerSettings
        {
            Formatting = Newtonsoft.Json.Formatting.Indented,
            ReferenceLoopHandling = ReferenceLoopHandling.Ignore                
        };

        config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;


        // To display errors in the browser during development, uncomment the following
        // line. Comment it out again when you deploy your service for production use.
        // config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

        Database.SetInitializer(new MobileServiceInitializer());
    }

我的上下文非常简单

public class SAServiceContext : DbContext
{        
    private const string connectionStringName = "Name=MS_TableConnectionString";

    public SAServiceContext()
        : base(connectionStringName)
    {
    }

    public DbSet<Recipe> Recipes { get; set; }
    public DbSet<Method> Methods { get; set; }
    public DbSet<RecipeItem> Items { get; set; }
    public DbSet<DietType> DietTypes { get; set; }...

     protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        string schema = ServiceSettingsDictionary.GetSchemaName();
        if (!string.IsNullOrEmpty(schema))
        {
            modelBuilder.HasDefaultSchema(schema);
        }

        modelBuilder.Conventions.Add(
            new AttributeToColumnAnnotationConvention<TableColumnAttribute, string>(
                "ServiceTableColumn", (property, attributes) =>               attributes.Single().ColumnType.ToString()));
     }
  }

正如我所说,这一切都在本地完美运行,当我将服务发布到云时,我可以看到MS_TableConnectionString没问题,但服务不起作用。它启动正常,我可以看到我的TableControllers中的所有相关方法,但只要我点击一个(例如GETSeason)我就会得到一般错误

An exception has occurred while using the formatter 'JsonMediaTypeFormatter' to generate sample for media type 'application/json'. Exception message: One or more errors occurred.

我试过了

PreserveReferencesHandling = PreserveReferencesHandling.Objects

但无济于事。 还要注意的是,这些表不是在SQL Azure中创建的,因为它永远不会访问从WebApiConfig调用的Database Initilaizer方法。 MS Azure门户中的日志也不显示任何错误。  我坚持任何帮助赞赏

修改 现在在Azure门户中看到以下错误。 MS_TableConnectionString是在Azure中自动创建的,所以不确定为什么它说这是一个问题。在本地我只是在web.config中使用connectionString

  

Exception = System.InvalidOperationException:数据库初始化失败。无法初始化架构'smallacorns_v3'中的一个或多个对象。请确保数据库连接字符串正确。有关错误的更多详细信息,请参阅内部异常。 ---&GT; System.InvalidOperationException:数据库初始化失败。无法初始化架构'smallacorns_v3'中的一个或多个对象。请确保数据库连接字符串正确。有关错误的更多详细信息,请参阅内部异常。 ---&GT; System.Data.SqlClient.SqlException:用户无权执行此操作。

1 个答案:

答案 0 :(得分:0)

这看起来像您使用Azure SQL数据库连接的用户没有权限创建Azure SQL数据库。

尝试为数据库用户提供&#39; db_owner &#39;角色和这个错误应该消失。