我有一个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:用户无权执行此操作。
答案 0 :(得分:0)
这看起来像您使用Azure SQL数据库连接的用户没有权限创建Azure SQL数据库。
尝试为数据库用户提供&#39; db_owner &#39;角色和这个错误应该消失。