回答済み アセンブリのバインド エラー?

  • 2012年4月5日 1:40
     
     

    始めて投稿させていただきます。
    よろしく御願い致します。

    現在、VS2003 C#.net(pro)で開発中したWebプログラム(携帯対応)を
    VS2010 C#.net(express)でリメイク中です。

    PC対応部分は問題なく動いているのですが
    携帯対応のASP.net部分で以下のようなエラーが発生し
    VSの方で'System.Web.Mobile'を確認すると参照アセンブリに入っています。
    色々見ているのですが今ひとつ対応が解りません。

    どなたかご教授いただけるとありがたく存じます。

    よろしく御願い致します。

    ---------------エラー メッセージ ------------------------------------
    '/MXXXXX' アプリケーションでサーバー エラーが発生しました。
    パーサー エラー
    説明: この要求の処理に必要なリソースの解析中にエラーが発生しました。以下の解析エラーの詳細を確認し、ソースファイルに変更を加えてください。

    パーサー エラー メッセージ: ファイルまたはアセンブリ 'System.Web.Mobile'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

    ソース エラー:

    行 1:  <%@ Page language="c#" Codebehind="MobileErr.aspx.cs" Inherits="MXXXXX.MobileErr" AutoEventWireup="false" %>
    行 2:  <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>
    行 3:  <HEAD>
    行 4:   <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">


    ソース ファイル: /MXXXXX/MobileErr.aspx    行: 2

    アセンブリ読み込みトレース: 以下の情報は、アセンブリ 'System.Web.Mobile' を読み込めなかった原因を調べるのに役立ちます。

    === 事前バインド状態情報 ===
    ログ: ユーザー = MY-COMPUTOR\ASPNET
    ログ: DisplayName = System.Web.Mobile
     (Partial)
    警告: 部分的バインドの情報がアセンブリに提供されました:
    警告: アセンブリ名: System.Web.Mobile | ドメイン ID: 2
    警告: アセンブリの表示名の一部分のみが提供されると、部分的なバインドが発生します。
    警告: これにより、不適切なアセンブリをバインダーが読み込む場合があります。
    警告: アセンブリの完全に指定されたテキスト ID を提供することをお勧めします。
    警告: このような ID は、簡易名、バージョン、カルチャ、および公開キー トークンで構成されます。
    警告: この問題の詳細および解決策については、ホワイトペーパー (http://go.microsoft.com/fwlink/?LinkId=109270) を参照してください。
    ログ: Appbase = file:///C:/Inetpub/wwwroot/MXXXXX/
    ログ: Initial PrivatePath = C:\Inetpub\wwwroot\MXXXXX\bin
    呼び出しているアセンブリ: (Unknown)
    ===
    ログ: このバインドは default の読み込みコンテキストで開始します。
    ログ: アプリケーション構成ファイル C:\Inetpub\wwwroot\MXXXXX\web.config を使用します。
    ログ: ホスト構成ファイル c:\windows\microsoft.net\framework\v4.0.30319\aspnet.config を使用します。
    ログ: c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config からのコンピューター構成ファイルを使用します。
    ログ: 現時点でポリシーは参照に適用されません (プライベート、カスタム、部分的、または場所ベースのアセンブリ バインド)。
    ログ: 同じバインドが以前見つかり、失敗して hr = 0x80070002 を返しました。

すべての返信

  • 2012年4月5日 2:10
     
     回答済み

    ASP.NET 4で、System.Web.Mobileはほとんど廃止されたような感じです。一通り機能は残っているみたいですが、非推奨で使用しないことをお勧めします。(そういった対応のことを「リメイク」と呼ぶんですよね? スマートフォン向けページを作ったりとか。)

    とは言え互換機能として本来、動作するはずです。エラーになった理由は.NET Framework 4 への移行に関する問題に記載されています。

    旧バージョンの ASP.NET では、ルートにある Web.config ファイルの assemblies セクションの system.web/compilation に System.Web.Mobile.dll アセンブリへの参照が含まれていました。 パフォーマンスを向上させるために、このアセンブリへの参照は削除されています。

    メモ
    System.Web.Mobile.dll アセンブリと ASP.NET モバイル コントロールは ASP.NET 4 に含まれていますが、それらの使用は推奨されません。

    このアセンブリに含まれる型を使用する場合は、ルートの Web.config ファイルまたはアプリケーションの Web.config ファイルにアセンブリへの参照を追加します。

    つまり、web.configのconfiguration/system.web/compilation/assembliesに書き足してやれば動作しそうです。

    しかし、繰り返しになりますが、そのような対応をするより、System.Web.Mobileを使わないような書き換えをすることをお勧めします。

  • 2012年4月5日 7:39
     
     

    早速のご回答、ありがとうございます。

    今はスマホなどが主流となりモバイル対応は変わりつつありますね。

    MCV辺りをうまく使い、変更していきたいと思います。

    ちなみに 既存のi-modeなどを含めスマホなどの対応における参照サイトがございましたら

    教えていただけると幸いです。

    今後とも、よろしく御願い致します。

  • 2012年4月5日 14:03
     
     
    ASP.NET MVCはWebFormと異なり、HTMLをほとんど書き換えません。ですので、静的なHTMLの記述方法がそのまま流用できます。