0

MVC3ASP.netWebアプリケーションをサーバー2008R2IIS 7.5ExpressWebサーバーにアップロードしました。

Webアプリは正常に読み込まれますが、ログオンリンクをクリックして、ユーザーアカウントを登録するか、既存のユーザーアカウントをログオンしようとすると、次のエラーが発生します。

申し訳ありませんが、リクエストの処理中にエラーが発生しました。

(IIS7.5内から)WebサーバーでWebアプリを参照し、ログオンリンクを試行すると、次のASPエラーが発生します。

SQLServerへの接続の確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認してください。(プロバイダー: SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー) "

説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細とコードの発生場所については、スタックトレースを確認してください。

"例外の詳細:System.Data.SqlClient.SqlException:SQL Serverへの接続の確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、およびSQLが正しいことを確認してくださいサーバーはリモート接続を許可するように構成されています(プロバイダー:SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー)」

ソースエラー:現在のWebリクエストの実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。」

誰かが私にトラブルシューティングを手伝ってくれませんか?

Web.Configで2つのデータベースを構成しています。

<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 Compact(Content_Database.sdf)データベースは正常に機能します。aspnetdb.mdfデータベースにアクセスしようとしたときにのみエラーが発生します。

ASPNETDB.mdfデータベースは、Visual Web DeveloperExpress2010からMicrosoftMVC3Razorテンプレート/チュートリアルをロードしたときに表示される状態と実質的に同じ状態です。

これが問題になった場合に備えて、SQL Express 2008をWebサーバーにインストールしてみましたが、違いはありませんでした。

Webアプリケーション全体がVisualWebDeveloper 2010 Express開発サーバーで完全に機能します(ユーザーを作成して、正常にログオンおよびログオフできます)。Webサーバーにアップロードされるとすぐに失敗します。

感謝するのを手伝ってください-どうもありがとう:-)

完全なWeb.Config:

    <?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

>>

4

1 に答える 1

0

Sql Compactデータベースの場合は、DatabaseDBContext/SDF のように見えます。このエンジンは、管理者の視点とは大きく異なります。基本的に、セットアップと作業は非常に簡単です。

ApplicationServices/mdf ファイルはCompactデータベースではなく、通常のSQL (express、dev、workgroup、standard、enterprise など) エンジンを使用します。これを機能させるには、少し調整が必要です。data source=オプションは、ローカル マシンにインストールされた特定のエンジンを使用してデータベースを開くように SqlClient を構成することです (これには、ローカル マシンに SQL を SqlExpress という名前のインスタンス化されたインストールとしてインストールする必要があります)接続を許可するように適切に構成します (おそらくリモート)。AppPoolIntegrated Securityで構成されたユーザーとしてサーバーに接続するように SqlClient を構成しています。データベースに接続するには、そのユーザーがデータベースが保存されているファイル、データベース自体 (セキュリティとして内部)、および SSPI の他のすべてのセキュリティ要件 (保持することを強くお勧めします) にアクセスできる必要があります。

アップデート

Compact Framework のみで実行されているプロジェクトがいくつかあります (小さなプロジェクトの場合、保守/管理が非常に簡単になるため)。

SQL Server Compact 4 を使用するには、 Visual Studio Tools for SQL Server Compact 4をインストールする必要があります。asp.netに erikej SQL コンパクト プロバイダー(メンバーシップとロール) を使用していますが、問題は発生していません。プロバイダーの優れた点は、現在のプロバイダーに対して記述したコードのほとんどが変更されないことです。プロバイダーとデータベースを置き換えるだけです。

いずれにせよ、楽しいコーディングを!

更新 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>
于 2012-04-17T17:02:33.680 に答える