2

開発マシンで MVC4 Web アプリを問題なく実行していますが、ホスト サーバーにデプロイすると、次の例外がスローされ@using(Html.BeginForm())ます。

        文字列は有効なブール値として認識されませんでした。

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

    例外の詳細: System.FormatException: 文字列が有効なブール値として認識されませんでした。

    ソース エラー:


    4 行目:  
    5 行目:  
    6 行目: @using(Html.BeginForm(new { returnurl = ViewBag.Returnurl }))
    7 行目: {
    8 行目: @Html.AntiForgeryToken()

    ソース ファイル: e:\Sites\familybook\Views\Login\Login.cshtml 行: 6

    スタックトレース:


    [FormatException: 文字列は有効なブール値として認識されませんでした。]
       System.Boolean.Parse(文字列値) +12636900
       System.Convert.ChangeType(オブジェクト値、型変換タイプ、IFormatProvider プロバイダー) +12819466
       System.Web.Mvc.ViewContext.ScopeGet(IDictionary`2 スコープ、文字列名、TValue defaultValue) +89
       System.Web.Mvc.ScopeCache..ctor(IDictionary`2 スコープ) +48
       System.Web.Mvc.ScopeCache.Get(IDictionary`2 スコープ、HttpContextBase httpContext) +282
       System.Web.Mvc.ViewContext.GetClientValidationEnabled(IDictionary`2 スコープ、HttpContextBase httpContext) +9
       System.Web.Mvc.Html.FormExtensions.FormHelper(HtmlHelper htmlHelper、文字列 formAction、FormMethod メソッド、IDictionary`2 htmlAttributes) +162
       System.Web.Mvc.Html.FormExtensions.BeginForm(HtmlHelper htmlHelper, Object routeValues) +192
       ASP._Page_Views_Login_Login_cshtml.Execute() in e:\Sites\familybook\Views\Login\Login.cshtml:6
       System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +280
       System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +125
       System.Web.WebPages.StartPage.ExecutePageHierarchy() +143
       System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter ライター、WebPageRenderingBase startPage) +181
       System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext コンテキスト) +380
       System.Web.Mvc.c__DisplayClass1a.b__17() +33
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter フィルター、ResultExecutingContext preContext、Func`1 継続) +613
       System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext、IList`1 フィルター、ActionResult actionResult) +263
       System.Web.Mvc.Async.c__DisplayClass25.b__22(IAsyncResult asyncResult) +230
       System.Web.Mvc.c__DisplayClass1d.b__18(IAsyncResult asyncResult) +28
       System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +20
       System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53
       System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +20
       System.Web.Mvc.c__DisplayClass8.b__3(IAsyncResult asyncResult) +42
       System.Web.Mvc.Async.c__DisplayClass4.b__3(IAsyncResult ar) +20
       System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +469
       System.Web.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値 & 完了した同期) +375

    バージョン情報: Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.0.30319.272

ホスト サーバーは、IIS 7.5 と、OS および .NET 4 フレームワークの最新の更新プログラムがインストールされた Windows サーバー 2008 R2 64 ビットです。

面白いことに、以前に展開したときに、サーバーを Windows 更新プログラムで更新するまで、このエラーが発生しませんでした。私が指摘したもう 1 つのことは、パブリッシュのタイプをデバッグするように設定すると、アプリケーションは問題なく動作しますが、リリース パブリッシュ タイプでは機能しないということです。

また、開発マシンのローカル フォルダーにデプロイしてから、コンテンツをホスト サーバーにコピーしようとしましたが、最終結果は同じでした。

編集:

 @model FamilyBook.Models.Account.LoginUserModel

@Scripts.Render("~/bundles/jqueryval")

<section>
    @using(Html.BeginForm(new { returnurl = ViewBag.Returnurl }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

        <fieldset>
            <legend>Login with local account</legend>

            <div class="editor-label">
                @Html.LabelFor(model => model.Username)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Username)
                @Html.ValidationMessageFor(model => model.Username)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Password)
            </div>
            <div class="editor-field">
                @Html.PasswordFor(model => model.Password)
                @Html.ValidationMessageFor(model => model.Password)
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.RememberMe)
            </div>
            <div class="editor-field">
                @Html.CheckBoxFor(model => model.RememberMe)
            </div>

            <p>
                <input type="submit" value="Login" />
            </p>

        </fieldset>
    }
</section>
4

1 に答える 1

2

この問題の根本的な原因は、カスタム キーの appSettings で web.conf 変換が実行されたときに、他のすべてのキーが最初のカスタム キーと同じ値で上書きされたことです。したがって、 -> の簡単な変更で問題が解決しました。これは、MVC System.Web.Mvc.ViewContext.GetClientValidationEnabled のこの関数を呼び出して clientSideValidation が有効かどうかを確認すると、アプリケーションがクラッシュするスタック トレースで確認できます。詳細については、このスレッドhttp://forums.asp.net/t/1924833.aspx/1?Format+exception+on+Html+BeginForm+String+was+not+recognized+as+a+valid+を参照してください。ブール値

于 2013-07-28T21:37:10.443 に答える