2

IIS に WCF サービスをデプロイした後、サービスにアクセスすると次のエラーが発生します。

'/MyService' アプリケーションでサーバー エラーが発生しました。

指定されたアセンブリ名またはコードベースが無効でした。(HRESULT からの例外: 0x80131047) 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.IO.FileLoadException: 指定されたアセンブリ名またはコードベースが無効でした。(HRESULT からの例外: 0x80131047)

ソース エラー:

現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。

スタックトレース:

[FileLoadException: 指定されたアセンブリ名またはコードベースが無効でした。(HRESULT からの例外: 0x80131047)]
System.RuntimeTypeHandle.GetTypeByName(文字列名、ブール値 throwOnError、ブール値 ignoreCase、ブール値 ReflectionOnly、StackCrawlMarkHandle スタックマーク、IntPtr pPrivHostBinder、ブール値 loadTypeFromPartialName、ObjectHandleOnStack タイプ) +0
System.RuntimeTypeHandle.GetTypeByName(文字列名、ブール値throwOnError、Boolean ignoreCase、Boolean reflectionOnly、StackCrawlMark& stackMark、IntPtr pPrivHostBinder、Boolean loadTypeFromPartialName) +153 System.Type.GetType(String typeName) +89 System.ServiceModel.HostingManager.CreateService(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +936
System.ServiceModel.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) +76
System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +901

[ServiceActivationException: コンパイル中の例外のため、サービス '/MyService/MySvcImpl.svc' をアクティブ化できません。例外メッセージは次のとおりです。指定されたアセンブリ名またはコードベースが無効でした。(HRESULT からの例外: 0x80131047)]
System.Runtime.AsyncResult.End(IAsyncResult 結果) +650220
System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult 結果) +210733
System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) +166

Assembly Binding Log Viewer (FUSLOGVW.EXE) を有効にしましたが、バインド エラーが表示されません。これを引き起こす原因、またはこれをデバッグする方法を知っている人はいますか?

4

2 に答える 2

2

問題を発見!いつか誰かを助けるかもしれないので、ここに投稿してください。

私の web.config には、次のような factory 属性を持つサービス アクティベーション要素が含まれています。

<serviceHostingEnvironment>
  <serviceActivations>
    <add relativeAddress="MyService.SvcImpl.svc" 
         service="MyService.SvcImpl" 
         factory="MyCompany.MyServiceHostFactory, MyCompany.MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=" />
  </serviceActivations>
</serviceHostingEnvironment>

factory 属性には、厳密な名前のアセンブリからのクラス参照が含まれています。ただし、PublicKeyToken 属性は、テスト署名証明書または公式署名証明書のどちらが使用されたかに応じて、ビルド システムによって正しい値に設定されるはずでした。ビルド ステップが何らかの理由で失敗し、アセンブリの厳密な名前が無効のままになりました。したがって、例外のメッセージの最初の部分はかなり正確でした。どのアセンブリをロードできなかったのかがわかりませんでした。FUSLOGVW.EXE もここでは役に立ちませんでした。

于 2013-04-20T04:22:56.983 に答える