1752291407
2025-06-28 13:48:00
私は、現在のクライアントの最適なWebサイトに変更を加えながら、プロパティタイプを文字列からXHTMLStringに変更すると、やや予想外のMissingMethoDexceptionに直面しました。私はMant Occationsでこの種の変更を行ってきましたが、文字列からXhtmlStringに移動することは問題を引き起こすことはありません。
[Display(
Name = "Brödtext",
GroupName = SystemTabNames.Content,
Order = 110,
Description = "")]
public virtual string Preamble { get; set; }
例外は、ビューファイルの単純なhtml.propertyfor呼び出しにスローされているように見えました。
[MissingMethodException: Method not found: System.String XX.Core.Models.Blocks.SomeBlock.get_Preamble().]
ASP._Page_Views_Shared_Blocks_SomeBlock_cshtml.Execute() in C:PathXXViewsSharedBlocksSomeBlock.cshtml:11
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +252
System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +148
このタイプの問題は、バイナリの不一致があるときに発生します。つまり、プロパティゲッターに電話をかけようとするコードをコンパイルしました。これは文字列を返すことになっていますが、XHTMLStringを返します。そのため、コンパイルされているものとコードにあるものとの間には不一致があります。
ソリューションは非常に簡単です。 Webサイトを停止し、一時的なASP-NETファイル(C: Windows Microsoft.net Framework64 V4.0.30319 Ceportion Asp.Net Files )をクリーンし、Webサイトを再起動するだけで十分です。
うまくいかない場合は、次のことを試してください。
- IDEを閉じ、ビンとOBJのディレクトリを取り外し、ソリューション全体を再構築します。
- 前述のように、一時的なASP.NETファイルをクリーニングします。
- iisresetを実行します。
- ビューがプロパティを文字列として使用しようとしないようにしてください。
これは、古いアセンブリで事前にコンパイルされたビューがある場合、またはサーバーが再開されなかった場合に発生する場合があります。その後、古い署名はまだメモリにある可能性があります。
また、特定のファイルのみを展開する場合、古いアセンブリまたはビューがまだそこにある可能性があります。
また、ASP.NETはビューとアセンブリをキャッシュする場合があります。
#Optimizely #Property #Return #Typeの変更GetterのMissingMethodexceptionエピソーバーMathias #Kuntoのブログ