2014-11-19 2 views
0

У меня есть Azure Mobile Service, которая отлично работает на месте и была тщательно протестирована с использованием Fiddler. Я настройка Ссылка Handling, чтобы избежать собственного реферирование петельПубликация Azure Mobile Service не работает

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, так как они никогда не попадают в метод Database Initilaizer, вызванный WebApiConfig. Журналы в MS Azure Portal arent также показывают любые ошибки. Im застрял любую помощь оценила

EDIT Теперь видит следующую ошибку в Azure портала. MS_TableConnectionString автоматически создается в Azure, поэтому не уверен, почему его высказывание является проблемой. Локально я просто использую connectionString в web.config

Exception = System.InvalidOperationException: Ошибка инициализации базы данных. Не удалось инициализировать один или несколько объектов в схеме «smallacorns_v3». Убедитесь, что строка подключения к базе данных верна. Подробнее об ошибке см. Внутреннее исключение. ---> System.InvalidOperationException: Ошибка инициализации базы данных. Не удалось инициализировать один или несколько объектов в схеме «smallacorns_v3». Убедитесь, что строка подключения к базе данных верна. Подробнее об ошибке см. Внутреннее исключение. ---> System.Data.SqlClient.SqlException: у пользователя нет разрешения на выполнение этого действия.

+0

Попробуйте поймать исключение в 'OnModelCreating' и запишите его с помощью' Trace.WriteLine' – Abhijeet

+0

Thx для вашего комментария Abhijeet. Я копаю глубже и вижу ошибку «Инициализация базы данных». Я не хочу, чтобы Azure создавал новые таблицы только для БД, поэтому мы будем исследовать дальше и, надеюсь, выставить редактирование. – SWilko

ответ

0

Это похоже, что пользователь, с помощью которого вы подключаетесь к базе данных Azure SQL, не имеет разрешений для создания базы данных Azure SQL.

Попробуйте дать пользователю базы данных 'db_owner' роль, и эта ошибка должна исчезнуть.