【发布时间】:2015-12-05 17:01:39
【问题描述】:
我希望通过 EntityFramework 在 Azure Worker Role 中与 SQL Server 数据库通信来使用 DbGeography。据我了解,DbGeography 在后台使用 Microsoft.SqlServer.Types / SqlServerSpatial110.dll,所以为了让它在 Azure 中工作,我遵循了:
http://blogs.msdn.com/b/adonet/archive/2013/12/09/microsoft-sqlserver-types-nuget-package-spatial-on-azure.aspx 并安装了 nuget 包,然后我在 WorkerRole.cs 的 OnStart 方法中指定加载 SQL Server 类型:
public override bool OnStart()
{
// Load SQL Server Types
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
然后我还关注了这篇博文https://alastaira.wordpress.com/2011/08/19/spatial-applications-in-windows-azure-redux-including-denali/,在那里我明确地将 SqlServerSpatial110.dll 添加到项目中并将其设置为始终复制。
所以真正的问题是 - 部署后,一切都按预期工作。但是,如果我将 Azure Worker 角色单独放置一段时间(约 30 分钟)并且它没有收到任何请求,我的代码的 DbGeography 部分将不再起作用。
- 我还有什么需要做的吗?
- 我是否将 LoadNativeAssemblies 调用放在了错误的位置(应该在 Run() 上?)
- Azure 辅助角色会被回收吗?
- 之前是否有人遇到过这种情况/设法将 DbGeography 与 Azure Worker 角色一起使用,或者对可能发生的情况有任何见解?
【问题讨论】:
-
另一个想法 - 这与 LoadLibrary 在 Azure Worker Role 中的功能有关吗?
-
我尝试在 Run() 上使用它,但也没有帮助;当您进入 Client.OnMessage() 时,实例之间的 AppDomain 是否可能不同?
标签: c# sql-server entity-framework azure azure-worker-roles