安装AppFabric后运行WCF工作流应用程序时出错

3
我安装了Windows Server AppFabric,现在我甚至无法运行最基本的WCF工作流服务应用程序。我已经完成了配置并设置了持久性存储、监视和缓存数据库,这些都正常工作。因此,我将其简化并创建并运行了一个空的WCF工作流服务应用程序。当我单击Service1.xaml文件时,会出现以下错误。我已检查了数据库,并且对所有数据库都具有dbowner访问权限(这里替换了我的真实登记详细信息)。我正在使用带有.NET 4更新1的VS2010。

“/”应用程序中的服务器错误。

无法打开由登录请求的数据库“AppFabricPersistenceDB”。登录失败。 用户'mydomain\myusername'的登录失败。 说明:在当前Web请求执行期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误以及其在代码中的来源的更多信息。

详情

Exception Details: System.Data.SqlClient.SqlException: Cannot open database "AppFabricPersistenceDB" requested by the login. The login failed.
Login failed for user 'mydomain\myusername'.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[SqlException (0x80131904): Cannot open database "AppFabricPersistenceDB" requested by the login. The login failed.
Login failed for user 'mydomain\myusername'.]
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5064458
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275
   System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
   System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject) +183
   System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) +239
   System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +195
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +232
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +185
   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +33
   System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +524
   System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
   System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +479
   System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +108
   System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +126
   System.Data.SqlClient.SqlConnection.Open() +125
   System.Activities.DurableInstancing.SqlCommandAsyncResult.StartCommandInternal(Boolean synchronous) +557
   System.Activities.DurableInstancing.SqlWorkflowInstanceStoreAsyncResult.StartOperation() +377

[InstancePersistenceCommandException: The execution of the InstancePersistenceCommand named {urn:schemas-microsoft-com:System.Activities.Persistence/command}CreateWorkflowOwner was interrupted by an error.]
   System.Runtime.AsyncResult.End(IAsyncResult result) +688590
   System.Runtime.DurableInstancing.InstancePersistenceContext.OuterExecute(InstanceHandle initialInstanceHandle, InstancePersistenceCommand command, Transaction transaction, TimeSpan timeout) +78
   System.Runtime.DurableInstancing.InstanceStore.Execute(InstanceHandle handle, InstancePersistenceCommand command, TimeSpan timeout) +82
   System.ServiceModel.Activities.Dispatcher.DurableInstanceManager.Open(TimeSpan timeout) +294

[CommunicationException: The InstanceStore could not be initialized.]
   System.ServiceModel.Activities.Dispatcher.DurableInstanceManager.Open(TimeSpan timeout) +394
   System.ServiceModel.Activities.WorkflowServiceHost.OnOpen(TimeSpan timeout) +105
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +318
   System.ServiceModel.HostingManager.ActivateService(String normalizedVirtualPath) +206
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath) +651

[ServiceActivationException: The service '/Service1.xamlx' cannot be activated due to an exception during compilation.  The exception message is: The InstanceStore could not be initialized..]
   System.Runtime.AsyncResult.End(IAsyncResult result) +688590
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +190
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.ExecuteSynchronous(HttpApplication context, String routeServiceVirtualPath, Boolean flowContext, Boolean ensureWFService) +234
   System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e) +379
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

你是否有多个 SQL 实例?你尝试过这个吗 - http://blogs.msdn.com/b/rjacobs/archive/2010/04/14/how-to-clear-and-reinitialize-appfabric-persistence-and-monitoring-databases.aspx? - Dmitry Harnitski
@dharnitski 我通常使用默认实例而不是 ./SQLEXPRESS。很可能这就是导致问题的原因。我尝试在 C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config 中更改连接字符串以使用默认本地实例,但是没有成功。不确定还需要在哪里更改 SQL 实例。 - Richie Mackay
显然,machine.config 不是这里的正确文件,我应该看 web.config 文件。 - Richie Mackay
@cizer:我的眼睛欺骗了我。 - user1228
1个回答

5

AppFabric配置工具仅更新此位置下的web.config文件:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config

如果使用“任何CPU”选项构建,您必须手动编辑此文件。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\web.config

使用这些设置(来自Framework64版本)

<connectionStrings>
    <add connectionString="Data Source=(local);Initial Catalog=AppFabricMonitoringDB;Integrated Security=True" name="ApplicationServerMonitoringConnectionString" providerName="System.Data.SqlClient" />
    <add connectionString="Data Source=(local);Initial Catalog=AppFabricPersistenceDB;Integrated Security=True" name="ApplicationServerWorkflowInstanceStoreConnectionString" providerName="System.Data.SqlClient" />
</connectionStrings>

它们之前被设置为默认值

<connectionStrings>
    <add connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=AppFabricMonitoringDB;Integrated Security=True" name="ApplicationServerMonitoringConnectionString" providerName="System.Data.SqlClient" />
    <add connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=AppFabricPersistenceDB;Integrated Security=True" name="ApplicationServerWorkflowInstanceStoreConnectionString" providerName="System.Data.SqlClient" />
</connectionStrings>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接