WinHost.comを使用してサイトをホストしています。 SQL Database/membershipシステムはローカルコンピューターで完全に動作しますが、サーバーにアップロードすると動作しません。すべての手順を正しく実行しました。また、サービスのサポートに連絡しましたが、2週間以上経過しており、返信がありません。
サイトのメンバーシップページでログインまたは新しいユーザーを登録しようとすると、このエラーが発生し続けます。
Server Error in '/' Application.
--------------------------------------------------------------------------------
Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.
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): Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1953274
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849707
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +204
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +175
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +137
System.Web.Util.SecUtility.CheckSchemaVersion(ProviderBase provider, SqlConnection connection, String[] features, String version, Int32& schemaVersionCheck) +378
System.Web.Security.SqlMembershipProvider.CheckSchemaVersion(SqlConnection connection) +89
System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +815
System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +105
System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved) +42
System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +78
System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +60
System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +119
System.Web.UI.WebControls.Login.AttemptLogin() +115
System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +166
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.4200; ASP.NET Version:2.0.50727.4016
誰かがこのエラーが発生した理由(明らかに何かを見つけることができない...)と、それを修正する方法を教えてもらえますか?
皆さん、ありがとうございました
バエル
WinHost.comのsqlサーバーに対してaspnet_regsql.exe
を実行しましたか?
aspnet_regsql.exe -S DBServerName -U DBLogin -P DBPassword -A all -d DBName
上記のコマンドを実行する場所がわからない場合は、単に「aspnet_regsql.exe」実行可能ファイルを実行できます。
このファイルを見つけるには、Windowsキー+ rを押してRUNコマンドボックスを開き、%windir%\Microsoft.NET\Framework\v4.0.30319
の下にコマンドを入力してEnterキーを押し、 'aspnet_regsql.exe'ファイルを見つけます。このエラーを解決するために従うことができるウィザードが開きます。
このエラーは、aspnet net tableが自動的に作成される前に、asp.net mvcプロジェクトでロールを有効にしなかった場合にほとんど発生します。
テーブルとオブジェクトがWinHost.comのSQLサーバー上に作成されるように、これを実行することを確認する必要があります。
[スタート]メニューの[Visual Studioツール]フォルダーから[Visual Studioコマンドプロンプト]を開き、aspnet_regsql
ウィザードに従って、asp.netメンバーシップおよびロールプロバイダーのデータベースを登録します。
これは前に見たことがあります。使用しているデータベースには、メンバーシップ、ロール管理、およびプロファイル機能に必要なデータベース要素がありません。したがって、いくつかのオプションがあります。
同じ問題があります-Visual StudioでSQL Object manager
からconnectionStringをコピーして貼り付け、Initial Catalog=YourDatabaseName
と入力するのを忘れます。
ASP.NET Identity 2を有効にしていたと信じて<roleManager>
を有効にしたとき、まったく同じエラーが発生しました。これらは同じではありません!<roleManager>
は、ASP.NET Identity 2とは異なるテーブル構造を使用するID管理の古いバージョンを有効にしました(これは、「有効にする」必要はありません-そこにあります)。
古いロールマネージャーを意図的に使用しているにもかかわらずエラーが発生する場合は、データベースではなくデフォルトのlocaldb
を参照している可能性があります。その場合は、<roleManager>
を変更して接続文字列あなたが欲しい:
<roleManager
enabled="true"
cacheRolesInCookie="true"
defaultProvider="OurSqlRoleProvider"
>
<providers>
<add
connectionStringName="DefaultConnection"
applicationName="/"
name="OurSqlRoleProvider"
type="System.Web.Security.SqlRoleProvider" />
</providers>
</roleManager>
ASP.NET Identity 2を使用している場合は、次の記事を参照してください。
http://johnatten.com/2014/04/20/asp-net-mvc-and-identity-2-0-understanding-the-basics/
ホストでストアドプロシージャが属するスキーマを確認します。「dbo」スキーマにない可能性があります。
例えばSomeOtherSchema内にある場合、呼び出しは "SomeOtherSchema.aspnet_CheckSchemaVersion"である必要があります。
要するに、ホスティングから割り当てられたsqlユーザー名を使用してaspnetプロバイダーdllを再コンパイルする必要があります。
試してみるのが簡単なフェラップのもう1つのオプションは、ローカルSQLサーバーデータベースのdbo参照をホスティングデータベースのユーザー名に置き換えてから、mdfファイルをアップロードして添付することです。
それが役に立てば幸い
トーマス