以下の内容はhttps://error-daizenn.hatenablog.com/entry/2026/02/24/061223より取得しました。


Embyで「System.InvalidCastException」が出て起動しない原因と復旧手順(Windows 10 / .NET 8)

 

Embyで「System.InvalidCastException」が出て起動しない原因と復旧手順(Windows 10 / .NET 8)

Emby Serverのトレイアイコンが一瞬だけ表示されて消え、そのままプロセス自体も落ちる。再起動や再インストール、Library.db削除でも直らない。ログを見ると System.InvalidCastException が出ており、DLNA関連の Emby.Dlna.DlnaOptions が「同じ型のはずなのに別物として扱われている」という内容——この症状は、Windows環境のEmbyでまれに起きる“参照の二重化(アセンブリが二重ロードされる)”系トラブルの典型です。

症状の要点:トレイが消えるのは「起動直後に例外で落ちている」サイン

本文の状況は、タスクマネージャー上でもEmby Serverが消える=起動直後に未処理例外でクラッシュしている状態です。ディスク容量やLibrary.dbは関係が薄く、実際ログでは GlobalExceptionHandler: UnhandledException が出ています。

今回の例外は次の点が重要です。

  • 例外種別:System.InvalidCastException

  • メッセージの核心:
    「[A]Emby.Dlna.DlnaOptions を [B]Emby.Dlna.DlnaOptions にキャストできない」

  • しかも A と B は 同じアセンブリ名・同じバージョン(Emby.Dlna 1.5.4.0) なのに、
    別の AssemblyLoadContext(#8 と #9)からロードされている と書かれている

この「同名同バージョンなのに別コンテキスト扱い」こそが、原因の方向性をほぼ決めます。

原因:DLNA周りのアセンブリが“二重ロード”されて型が別物になる

.NET(特に近年のランタイム)では、プラグインや拡張、動的ロードを行うと、同じDLLでも別のコンテキストでロードされることがあります。すると見た目が同じ Emby.Dlna.DlnaOptions でも、実体は

  • コンテキスト#8でロードされた Emby.Dlna.DlnaOptions

  • コンテキスト#9でロードされた Emby.Dlna.DlnaOptions

という 別型 になり、キャスト時に落ちます。エラーメッセージが言っているのはまさにこれです。

この状態が発生する代表パターンは次の通りです。

  • どこかに DLNA関連DLLが重複配置され、Embyが別ルートからもう一度読み込んでしまう

  • プラグインの破損/更新失敗/残骸により、旧ファイルと新ファイルが混在

  • 「再インストール」しても、ユーザープロファイル配下のデータやプラグインが残っており、問題が再現する

  • セキュリティソフトやバックアップ同期が絡み、DLLが部分的に置き換わった/二重化した

Library.dbを消しても直らないのは、今回の落ち方が「ライブラリDBに到達する前、DLNA構成の読み込み段階で落ちている」ためです。ログでも GetDlnaConfigurationReloadComponents の流れで崩れています。

まずやるべき復旧方針:プラグインとDLNA設定の“クリーン化”

狙いはシンプルで、DLNA周りが二重ロードされる原因(重複DLL・プラグイン残骸・設定破損)を除去します。重要なのは「アンインストール」や「再インストール」だけでは不十分なことが多い点です。ユーザー配下のデータが残るからです。

以下は、効果が出やすい順に並べた現実的な手順です。

1) Emby Serverを完全停止してから作業する

  • タスクマネージャーで Emby Server が残っていないことを確認

  • もしサービスとして動いているなら、サービスも停止

起動したままファイルを触ると、部分的に置き換わって状況が悪化することがあります。

2) プラグインフォルダを退避(最重要)

今回のような「同名DLLが別コンテキストでロード」は、プラグインが起点になりやすいです。
Embyのデータパスはログに出ています。

  • C:\Users\soopa\AppData\Roaming\Emby-Server\programdata

この配下に plugins(またはそれに相当するプラグイン格納場所) があるはずなので、フォルダごと別名にして退避します(例:plugins_disabled)。

これで起動できるようになれば、原因はプラグイン側(もしくはプラグインが持ち込んだDLL重複)にほぼ確定します。

3) DLNAの設定・キャッシュ相当を初期化する

例外はDLNA構成読み込みで発生しているため、DLNA関連の設定ファイル破損も疑います。
programdata配下の設定(dlnaDlnaconfig など名称は環境で異なる)で、DLNA関連があれば退避して起動確認します。

ポイントは「削除」ではなく退避です。戻せるようにしておけば安全に切り分けできます。

4) “system” 配下と “programdata” 配下の混在を疑う

ログにはアプリケーションパスが次であるとあります。

  • C:\Users\soopa\AppData\Roaming\Emby-Server\system

この構成は「ユーザープロファイル配下にsystemがある」タイプです。ここで起きやすいのが、再インストールや手動上書きで

  • system 内にある Emby.Dlna.dll(または関連DLL)

  • programdata 側やplugins側にある同名DLL

が混在し、結果として二重ロードが発生するケースです。

対策としては、プラグインを無効化した状態で起動が通るかを最優先で確認し、通るならプラグイン群を一つずつ戻して犯人を特定します。DLNAやネットワーク系のプラグインが引き金になりやすいです。

5) .NETランタイムやWindows更新が直近で入った場合の対処

「何も変えていないのに突然」というとき、ユーザーの操作ではなく

  • Windows Update

  • .NET更新

  • セキュリティソフトの定義更新

がトリガーになることがあります。根本原因がファイル二重化である限り、上の“クリーン化”が効きますが、再発するなら次も見直します。

  • セキュリティソフトの隔離/復元履歴(Emby配下のDLLが触られていないか)

  • 同期ソフト(OneDrive等)が AppData 配下を同期して競合していないか

再発防止:直し方より「壊れ方」を作らない

この手の例外は、DB破損のように単発で終わるより、環境要因で再発することがあります。再発しない運用のコツは次です。

  • Embyの更新時は「上書き」より 正規の更新手順を使う(途中でファイルが混在しにくい)

  • プラグインは一気に大量更新せず、更新後はログを軽く確認する

  • AppData配下を同期対象にしない(競合や巻き戻りが起きると混在しやすい)

  • 何かおかしいときはまず plugins退避で切り分ける(原因特定が早い)

まとめ:今回のエラーは「DLNA型の二重ロード」が本命。プラグイン退避が最短ルート

Emby.Dlna.DlnaOptions が同名同バージョンなのにキャストできないのは、.NETのロードコンテキストが分かれて型が別物になっているためです。つまり「DLNAそのものが壊れた」というより、DLNA関連DLLが二重に読み込まれる状態を作っている何か(プラグイン残骸・重複DLL・更新不整合)が原因です。

最短で直すなら、

  1. Embyを完全停止

  2. pluginsフォルダを退避して起動確認

  3. DLNA設定を退避して起動確認

  4. 問題のプラグイン/重複ファイルを特定して整理

この順番が効率的です。トレイが一瞬出て消えるタイプのクラッシュは、アプリ本体の再インストールだけでは直りにくいので、「ユーザーデータ側(プラグインと設定)をクリーンにして起動を通す」ことが復旧の近道になります。




以上の内容はhttps://error-daizenn.hatenablog.com/entry/2026/02/24/061223より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14