У меня есть 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: у пользователя нет разрешения на выполнение этого действия.
Попробуйте поймать исключение в 'OnModelCreating' и запишите его с помощью' Trace.WriteLine' – Abhijeet
Thx для вашего комментария Abhijeet. Я копаю глубже и вижу ошибку «Инициализация базы данных». Я не хочу, чтобы Azure создавал новые таблицы только для БД, поэтому мы будем исследовать дальше и, надеюсь, выставить редактирование. – SWilko