0

我最近將SQL Server Express數據庫本地升級到了SQL Server 2012 Developer。我開始得到這個錯誤。一個快速搜索拉扯噸帖子的答案似乎是從您的連接字符串中刪除User Instance=True;獲取錯誤「此版本的SQL Server不支持用戶實例登錄標誌。」但沒有使用此標誌

我檢查過,沒有我的連接字符串有這個標誌。我試圖搜索「用戶實例」的整個解決方案,只是爲了確保它不會出現在任何地方。雙奇怪的是,我沒有馬上得到這個錯誤。第一對夫婦打電話給數據庫工作...

有沒有其他人有類似的經歷?

這是導致我的錯誤的確切代碼:

public class BetterAuthorizeAttribute : AuthorizeAttribute 
{ 
    public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext) 
    { 
     var roleList = Roles.Split(','); 

     //if the user is in one of the roles in the list 
     foreach (string r in roleList) 
     { 
      if (filterContext.HttpContext.User.Identity.IsAuthenticated) 
      { 
       //The error is consistently thrown here the second time this line 
       //executes... 
       if (filterContext.HttpContext.User.IsInRole(r.Trim())) 
       { 

下面是配置部分我認爲是相關的:

<connectionStrings> 
    <add name="BioSphereContext" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=fake;Database=fake;User ID=fake;Password=fake;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=true;" /> 
</connectionStrings> 

. 
. 
. 

<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="15"> 
    <providers> 
    <add name="DefaultSessionProvider" 
     type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     connectionStringName="DefaultConnection" applicationName="/" /> 
    </providers> 
</sessionState> 


. 
. 
. 

<entityFramework> 
    <defaultConnectionFactory 
     type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
      <parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" /> 
     </parameters> 
    </defaultConnectionFactory> 
</entityFramework> 

關於我的情況下,它可以幫助項目更多的細節。 ..

  • VS 2012
  • 實體Framewo RK 5
  • 天青SDK 2.0
  • ASP.NET MVC 3
  • .NET 4.5
+0

你可以添加你的連接字符串/配置(即使你確信它們是正確的嗎?) –

+0

在做了一些更多的研究後,我覺得這個錯誤可能與DefaultSessionProvider有關。這對任何人來說都是一個鐘聲嗎? –

回答

0

不知道什麼是錯的,但我刪除並重新克隆了我的git倉庫。錯誤消失...從來沒有得到那一天回來......大聲笑。我會離開這個帖子,以防這些對他人有幫助。

1

該代碼使用ASP.NET成員角色提供商

if (filterContext.HttpContext.User.IsInRole(r.Trim())) 

在Machine.config顯示

  <roleManager> 
      <providers> 
       <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
       <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      </providers> 
     </roleManager> 

指向s中的「LocalSqlServer」 ame文件

<connectionStrings> 
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/> 
</connectionStrings> 

存在用戶實例。

TODO:將您的roleManager配置爲使用其他角色提供者或AspNetSqlRoleProvider來使用不同的連接字符串。

同樣適用於會話(什麼是DefaultConnection?我沒有看到像這樣命名的連接字符串),成員資格和配置文件。

所以嘗試:

<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="15"> 
    <providers> 
    <add name="DefaultSessionProvider" 
     type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     connectionStringName="BioSphereContext" applicationName="/" /> 
    </providers> 
</sessionState> 
+0

我沒有machine.config,我的web.config沒有roleManager。這就是說我認爲我看到它如何適用於我的應用程序的上下文。正如你所建議的,我嘗試將會話狀態提供程序上的連接設置爲BiosphereContext,沒有任何影響。我試過註釋掉整個會話狀態塊,在同一行仍然出現相同的錯誤。所以現在我想知道這是否與它沒有任何關係。只有這樣,我才能改變消息是從app_data文件夾中刪除aspnetdb.mdf。然後我得到「無法連接到數據庫」與內部異常關於用戶實例標誌... bah –

+1

當然你有一個machine.config(C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine。 config或C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config) –

相關問題