0

我剛剛將我的MVC3 ASP.net Web應用程序上傳到我的服務器2008 R2 IIS 7.5 Express網絡服務器。MVC3網絡應用程序/教程將不會「在IIS7網絡服務器上使用ASPNETDB.mdf」登錄「

Web應用程序加載罰款,但在登錄點擊鏈接,要麼試圖註冊一個用戶帳戶或登錄一個現有的用戶帳戶上,我得到以下錯誤時:

對不起,發生了錯誤,而處理您的請求。「

如果我在瀏覽我的web服務器的web應用程序(從IIS7.5中),並嘗試登錄鏈接我得到以下ASP錯誤:

與網絡相關的或實例建立連接時發生特定錯誤離子到SQL Server。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (提供程序:SQL網絡接口,錯誤:26 - 錯誤定位服務器/實例指定)

說明:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

」異常詳細信息:System.Data.SqlClient.SqlException:建立到SQL Server的連接時發生網絡相關或實例特定的錯誤。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (提供者:SQL網絡接口,錯誤:26 - 錯誤定位服務器/實例指定)「

源錯誤:在當前web請求的執行過程中生成 未處理的異常。有關異常原因和發生位置的信息可以使用下面的異常堆棧跟蹤信息確定「

會有人介意幫我排查請

我在我的web.config配置了兩個數據庫:?

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

的SQL緊湊型(Content_Database.sdf)數據庫工作正常。我只是在嘗試訪問ASPNETDB.MDF數據庫時的錯誤。

的ASPNETDB.MDF數據庫PRACT在與從Visual Web Developer Express 2010加載Microsoft MVC3 Razor模板/教程時得到的結果完全相同。

我試着在我的web服務器上安裝SQL Express 2008,以防萬一這是問題,沒有任何區別。

整個Web應用程序在我的Visual Web Developer 2010 Express開發服務器上完美工作(我可以創建用戶併成功登錄和註銷它們)。它只要上傳到網絡服務器就會失敗。

幫助讚賞 - 非常感謝:-)

Full Web。配置:

<?xml version="1.0"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=152368 
    --> 

<configuration> 
    <connectionStrings> 
     <add name="DatabaseDBContext" connectionString="data source=|DataDirectory|\Content_Database.sdf" /> 
     <add name="ApplicationServices" connectionString="data source=|DataDirectory|\aspnetdb.sdf" /> 

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

    <appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 

    <system.web> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 

    <authentication mode="Forms"> 
     <forms loginUrl="~/Admin/LogOn" timeout="2880" /> 
    </authentication> 

    <membership> 
     <providers> 
     <clear/> 
      <add name="SqlCeMembershipProvider" type="Project1.Domain.SqlCeMembershipProvider" connectionStringName="ApplicationServices" applicationName="/" 
     enablePasswordRetrieval="false" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" writeExceptionsToEventLog="false" /> 
      <!--<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" 
      enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
      maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" 
      applicationName="/" />--> 
     </providers> 
    </membership> 

    <profile> 
     <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" /> 
     </providers> 
    </profile> 

    <roleManager defaultProvider="SqlCeRoleProvider" 
      enabled="true" 
      cacheRolesInCookie="true" 
      cookieName=".ASPROLES" 
      cookieTimeout="30" 
      cookiePath="/" 
      cookieRequireSSL="false" 
      cookieSlidingExpiration="true" 
      cookieProtection="All"> 
     <providers> 
     <clear/> 
      <add name="SqlCeRoleProvider" type="System.Web.Security.SqlCeRoleProvider" connectionStringName="ApplicationServices" applicationName="/" writeExceptionsToEventLog="true" /> 
     <!--<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />--> 
     <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" /> 
     </providers> 
    </roleManager> 

    <pages> 
     <namespaces> 
     <add namespace="System.Web.Helpers" /> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Routing" /> 
     <add namespace="System.Web.WebPages"/> 
     </namespaces> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration 

>

回答

0

它看起來像你的DatabaseDBContext/SDF如果SQL 緊湊數據庫。這個引擎與管理員的觀點非常不同。基本上,設置和工作起來非常簡單。

你ApplicationServices/MDF文件不是緊湊數據庫,它採用了正常 SQL(表示,開發者的工作組,標準,企業等)的發動機。這確實需要調整一下才能工作。您的data source=選項是將SqlClient配置爲使用本地計算機上安裝的特定引擎來打開數據庫(這需要將sql作爲實例安裝在本地計算機上安裝,名稱爲SqlExpress),並已正確配置以允許連接(可能遠程)。 Integrated Security正在配置SqlClient以連接到服務器,如用戶在AppPool中配置的用戶連接到數據庫,該數據庫要求用戶有權訪問存儲數據庫的文件,數據庫本身(作爲安全內部)以及SSPI的所有其他安全要求(我強烈建議您保留)。

更新

我有專門的Compact Framework中運行的幾個項目(因爲對於小項目,它是如此容易得多維護/管轄)。

要使用SQL Server Compact 4,您需要安裝Visual Studio Tools for SQL Server Compact 4。我使用了asp.net的erikej SQL Compact Providers(Membership and Role),並沒有遇到任何問題。關於提供程序的好處是,您針對當前提供程序編寫的大部分代碼都不會更改,您只需更換提供程序和數據庫即可。

無論哪種方式,快樂編碼!

更新2

我的web.config有如下條目:

<connectionStrings> 
<add name="membershipDatabase" 
     connectionString="data source=|DataDirectory|\Membership.sdf" /> 
</connectionStrings> 

<membership defaultProvider="SqlCeMembershipProvider"> 
    <providers> 
    <clear /> 
    <add name="SqlCeMembershipProvider" 
     type="Project1.Domain.SqlCeMembershipProvider"   
     connectionStringName="membershipDatabase" 
     applicationName="/" 
     enablePasswordRetrieval="false" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="true" 
     passwordFormat="Hashed" 
     writeExceptionsToEventLog="false" /> 
    </providers> 
</membership> 
<roleManager defaultProvider="SqlCeRoleProvider" 
      enabled="true" 
      cacheRolesInCookie="true" 
      cookieName=".ASPROLES" 
      cookieTimeout="30" 
      cookiePath="/" 
      cookieRequireSSL="false" 
      cookieSlidingExpiration="true" 
      cookieProtection="All"> 
    <providers> 
    <clear /> 
    <add name="SqlCeRoleProvider" 
     type="Project1.Domain.SqlCeRoleProvider" 
     connectionStringName="membershipDatabase" 
     applicationName="/" 
     writeExceptionsToEventLog="true" /> 
    </providers> 
</roleManager> 
+0

非常感謝您的幫助埃裏克。我確實運行兩個不同的數據庫。最初運行本教程時,Web應用程序的模板具有註冊用戶並將其註冊和關閉的功能。它使用標準的「aspnetdb.mdf」數據庫。創建其他數據庫時,教程通過創建SQL Compact數據庫來討論我們。 – Harry 2012-04-17 21:33:54

+0

這似乎解決了這個問題,理想情況下我想在Web應用程序中使用.sdf文件 - 但是我不知道如何或從哪裏開始更改應用程序功能以使用SQL compact作爲數據庫控制創建用戶並允許他們進行身份驗證。我將重新訪問我的網絡服務器並檢查SQL Express是否正確安裝。 – Harry 2012-04-17 21:36:58

+0

已更新爲SQL CE信息。 – 2012-04-17 21:49:28