次のコードは、str が NULL の場合に NULL 参照エラーを返しますが、開発サーバーやテスト サーバーではなく、運用サーバーでのみ発生します。
<div>
<input value="@Html.Raw(str)" />
</div>
これはうまくいきます:
<div>
<input value="@str" />
</div>
これと同じように:
<div>
Values is: @Html.Raw(str)
</div>
したがって、 @Html.Raw が NULL パラメータを受け入れられないという問題ではありません。ただし、その場合に正確に何が返されるかはわかりません。しかし、あるサーバーと別のサーバーではどういうわけか異なります。
どちらも同じバージョンの System.Web.Mvc を実行していますが、他の DLL を確認する必要があるかどうかはわかりません。クラッシュしている MVC メソッドを含む必要があるアセンブリである System.Web.WebPages は、両方のサーバーで同じバージョンです。これは MVC バージョン 4 です。.Net 4.5。
どうしてそんなことが可能なのですか?エラーは WriteAttributeTo メソッドで発生しますが、@Html.TextBoxFor ヘルパーではなく標準の HTML 入力タグを使用しているため、なぜここで呼び出されるのかさえわかりません。
編集 役に立つかもしれないことの 1 つは、他の人がそのコードを自分のビューに入れてみて、それが機能するか壊れるかを確認することです。少なくとも、予期しない動作をしているのが本番環境なのかテスト環境なのかはわかります。
完全なスタック トレースは次のとおりです。
System.Web.WebPages.WebPageExecutingBase.WriteAttributeTo (文字列 pageVirtualPath、TextWriter ライター、文字列名、PositionTagged
1 prefix, PositionTagged
1 サフィックス、AttributeValue[] 値) で System.Web.WebPages.WebPageExecutingBase.WriteAttributeTo (TextWriter ライター、文字列名、PositionTagged1 prefix, PositionTagged
1 サフィックス、 System.Web.WebPages.WebPageExecutingBase.WriteAttribute (文字列名、PositionTagged) の AttributeValue[] 値)1 prefix, PositionTagged
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\fdd62ffd\90d151d1\App_Web_xsolwitr.2.cs: System.Web.WebPages.WebPageBase.ExecutePageHierarchy() の行 0 System.Web.WebPages.StartPage.ExecutePageHierarchy() の System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext) pageContext、TextWriter ライター、WebPageRenderingBase startPage) の System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) の System.Web.Mvc.ControllerActionInvoker.<>c_ DisplayClass1a.b _17() の System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter (IResultFilter フィルター、ResultExecutingContext preContext、Func1 continuation) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func
1 継続) System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext、IList`1 フィルター、ActionResult actionResult) で System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c_ DisplayClass25.b _22(IAsyncResult asyncResult) で System. Web.Mvc.Controller.<>c_ DisplayClass1d.b _18(IAsyncResult asyncResult) は System.Web.Mvc.Async.AsyncResultWrapper に。<>c_ DisplayClass4.b _3(IAsyncResult ar) は System.Web.Mvc.Controller.EndExecuteCore() にIAsyncResult asyncResult) System.Web.Mvc.Async.AsyncResultWrapper.<>c_ DisplayClass4.b _3(IAsyncResult ar) at System.Web.Mvc.MvcHandler.<>c_ DisplayClass6 .<>c _DisplayClassb.b_4(IAsyncResult asyncResult) System.Web.Mvc.Async.AsyncResultWrapper.<>c _DisplayClass4.b__3(IAsyncResult ar) System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()で.HttpApplication.ExecuteStep(IExecutionStep ステップ、ブール値 & completedSynchronously)