C# ASP.NET、Azure 混合 SQL 连接无法连接到 Web 表单应用程序上的数据库

标签 c# sql asp.net database azure

我们公司想要部署一个 Web 表单应用程序,但仍然在本地运行我们的数据库。 Azure 混合连接可以让你做到这一点。我创建了一个新项目并关注 this来自微软 azure 。

该应用程序在调试时可以工作,我可以将新用户添加到数据库并登录。该应用程序在部署时运行,但是当我想要登录或向成员(member)数据库添加新用户时,它会给我:“算术运算导致溢出。”。

web.config 中的连接字符串:

    <add name="DefaultConnection" connectionString="Server=MyServerName\\MAILREGLOCAL,1433; Database=MembershipDB; User ID=myID; Password=myPassword"
  providerName="System.Data.SqlClient" />

这是完整的堆栈跟踪:

[OverflowException: Arithmetic operation resulted in an overflow.]
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +347
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +78
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +191
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +154
   System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +90
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +217
   System.Data.SqlClient.SqlConnection.Open() +96
   System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<Open>b__36(DbConnection t, DbConnectionInterceptionContext c) +10
   System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch(TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed) +72
   System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext) +360
   System.Data.Entity.SqlServer.<>c__DisplayClass33.<UsingConnection>b__32() +426
   System.Data.Entity.SqlServer.<>c__DisplayClass1.<Execute>b__0() +10
   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Func`1 operation) +189
   System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation) +78
   System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action`1 act) +175
   System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action`1 act) +375
   System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable`1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +86
   System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +164
   System.Data.Entity.Core.Common.DbProviderServices.CreateDatabase(DbConnection connection, Nullable`1 commandTimeout, StoreItemCollection storeItemCollection) +76
   System.Data.Entity.Core.Objects.ObjectContext.CreateDatabase() +134
   System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection connection) +119
   System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +142
   System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +78
   System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func`3 createMigrator, ObjectContext objectContext) +89
   System.Data.Entity.Internal.InternalContext.CreateDatabase(ObjectContext objectContext, DatabaseExistenceState existenceState) +116
   System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +218
   System.Data.Entity.CreateDatabaseIfNotExists`1.InitializeDatabase(TContext context) +151
   System.Data.Entity.Internal.<>c__DisplayClassf`1.<CreateInitializationAction>b__e() +76
   System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +60
   System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +357
   System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c) +7
   System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +110
   System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +198
   System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +73
   System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +28
   System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +53
   System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +15
   System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +38
   System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable`1 source, Expression`1 predicate, CancellationToken cancellationToken) +138
   System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable`1 source, Expression`1 predicate) +145
   Microsoft.AspNet.Identity.EntityFramework.<GetUserAggregateAsync>d__6c.MoveNext() +473
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.AspNet.Identity.CultureAwaiter`1.GetResult() +59
   Microsoft.AspNet.Identity.Owin.<PasswordSignInAsync>d__29.MoveNext() +359
   System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +92
   System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58
   Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func`1 func) +160
   Microsoft.AspNet.Identity.Owin.SignInManagerExtensions.PasswordSignIn(SignInManager`2 manager, String userName, String password, Boolean isPersistent, Boolean shouldLockout) +127
   TestDeployForms.Account.Login.LogIn(Object sender, EventArgs e) +147
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9696694
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.<ProcessRequestMainAsync>d__523.MoveNext() +5911

最佳答案

哇,没想到 - 感谢 Aravind 给我指出 this site .

解决问题的方法是遵循 MSDN 中的以下说明:

**

The instructions need to be followed on hosts running the Hybrid Connection Manager.  The instructions for directly editing the registry are:
To add this schannel registry entry registry entry, follow these steps:
1.Click Start, click Run, type regedit in the Open box, and then click OK.
2.Locate and then click the following subkey in the registry:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL
3.On the Edit menu, point to New, and then click DWORD Value.
4.Type SendExtraRecord for the name of the DWORD value, and then press Enter.
5.Right-click SendExtraRecord, and then click Modify.
6.In the Value data box, type 2 to disable the split record in schannel, and then click OK.
7.Exit Registry Editor.
8. Restart the Azure Hybrid Connection Manager Service or reboot the machine the Azure Hybrid Connection Manager Service is installed on (see the security update to determine which is required, or reboot the machine to be safe)
Make sure that if you copy/paste the key name you don’t accidentally put a space in at the end.
Make sure you name the DWORD “SendExtraRecord”
Make sure the DWORD was set to 2.

**

关于C# ASP.NET、Azure 混合 SQL 连接无法连接到 Web 表单应用程序上的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38696994/

相关文章:

c# - TFS 2012 API : How do I get all history for a file including renames and merges?

asp.net - 内容管理 - ASP.NET 建议

php - laravel Eloquent 多个左连接

sql - RODBC 错误 : Could not SQLExecDirect

c# - “Microsoft.ace.oledb.12.0”未读取服务器上 .xlsx 文件中的所有行 (IIS7)

c# - SERVICE STACK 中的长轮询

c# - 阻止任务继续

c# - Windows Phone 8 中具有多个 ItemTemplates 的列表框

asp.net - CSS 将鼠标悬停在图像上以显示子菜单

c# - 具有后备属性的 setter 中的 StackOverflowException