web-dev-qa-db-ja.com

wcfサービスのServiceHostディレクティブのサービスタイプの問題

テスト用のシンプルなwcfサービスを開発しています。ローカルIIS 7.5でこのサービスをテストすると、正常に機能します。しかし、Web IISでホストすると、このエラーが表示されます。

ServiceHostディレクティブのService属性値として提供された、または構成要素system.serviceModel/serviceHostingEnvironment/serviceActivationsで提供されたタイプ 'WcfServiceLibrary1.Service1'が見つかりませんでした。

そして私のServiceHostは:

<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary1.Service1" %>

この問題を解決するのを手伝ってください

37
hamed aj

私がこれを探した質問のいずれにもこれが提案されていなかったため、ここに私のケースを追加しました:

ファイルMyService.svc.csのネームスペースを手動で変更し、対応するファイルMyService.svcのサービス名を変更しなかったときにこの問題が発生しました-Service = "namespace.classname"である必要があることが判明しました。

39
Jac

アセンブリ修飾タイプ名を使用してみてください。

これは [Fully Qualified Type Name], [Assembly]

どこ[Fully Qualified Type Name]は、最も一般的な場合YourNamespace.YourType

そして、[Assembly]は、最も一般的な場合YourAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

これよりも複雑になります(ジェネリック型、ネストされた型など)-しかし、そうなる可能性は低いでしょう。

アプリケーションがデフォルトのビルドオプションを使用している場合、ディレクティブは次のようなものであると推測する危険があります。

<%@ ServiceHost Language="C#" Debug="true" 
   Service="WcfServiceLibrary1.Service1, 
            WcfServiceLibrary1, 
            Version=1.0.0.0, 
            Culture=neutral, 
            PublicKeyToken=null" %>

おそらくそこの改行を取り除きたいでしょう。

また、dllが実際にデプロイされていることを確認してください

20
Andras Zoltan

サービスを公開するときにのみ同じ問題が発生しましたが、ローカルで機能していました。

サービスは、デプロイされていないDLLを参照している。それへの参照すら持っていなかったため、「ローカルコピー」はtrueに設定されていませんでした。

8
mike kozelsky

IISは、デフォルトで、仮想ディレクトリのsvcファイルと、binフォルダー内のバイナリ(marc_sがコメントされているように)を見ることを期待します。

ただし、WCFライブラリプロジェクトのデフォルトのビルド構成は、bin/Debugフォルダー(またはbin/Release)内でビルドします。プロジェクトプロパティの[ビルド]タブで[出力パス]を「bin /」に変更できます。

これを変更することで、今日、このエラーを解決しました。

8
Nij

最終的に私の問題は解決しました。

ホストのサービスディレクトリを削除し、ホストスペースに新しい仮想ディレクトリを作成しました。次に、作成した新しいディレクトリにサービスをコピーしました。

これで、サービスの.svcファイルを参照でき、クライアントがサービスを消費します。

この問題が発生した理由がわかりません!私は少し混乱しています!

4
hamed aj

IISの新しい場所(新しいサイト)に作業サービスを展開した後、この同じ問題が発生しました。デフォルトのウェブサイトツリーの下のinetmgrで、新しいサイトを右クリックせず、アプリケーションに変換を選択していませんでした-すべて正常に動作しています!

4
Tom Tom

回答としてマークされた回答を理解するのは非常に困難です。実際、同じような問題を解決することになりましたが、それは著者が何を意味していたかを正確に理解しているためかどうかはわかりません。

開発マシン上のIISアプリケーションを、web.config、MyService.svc、およびWCFサービスアプリケーションに必要なbinフォルダが存在する実際のプロジェクトディレクトリを指すようにすると、これは、すべての設定を4回チェックし、他の単純で動作するWCFアプリケーションと同等であることを確認しているにもかかわらず、このエラーをスローしていました。

最終的に、プロジェクトファイルとディレクトリ自体に依存するのではなく、別のディレクトリに公開することで問題を解決しました。

おそらく、IISを介してWCFアプリケーションを実行しようとしていたときに、ファイルがVisual Studioで開かれていたからでしょうか。わかりませんが、Visual Studioが提供するlocalhost:59871/...が機能していました。そのインスタンスがプロジェクトファイルを使用しているか一時的に公開されたバージョンを使用しているかはわかりません。

3
argyle

「SeviceHost」の「Service」で記述された名前空間とクラスが正しいかどうかを確認します。Service="namespace.classname"

2
user6676476

私のソリューションに組み込まれたテストプロジェクトを実行するこの問題がありました。

ブラウザで表示してから、そのリンクを新しいサービス参照にコピー(古いものを削除)し、サービス参照でユーティリティユーティリティボタンを使用するのではなく、貼り付ける必要がありました。

1
DirtyHowi

奇妙なことに、他の提案を探して試した後、私はまだエラーを受け取っていました:ServiceHostディレクティブのService属性値として提供された、または構成要素system.serviceModel/serviceHostingEnvironment/serviceActivationsで提供されたタイプ '見つけられた。

確かに、たくさんのDLLを含む大規模なプロジェクトを手に入れることができます。ソリューションの古いコンポーネントのいくつかは.Net 4.5を対象としており、新しいdllは4.5.1でビルドされていました。 4.5 dllが4.5.1 dllを参照したとき....なぜ私がこれを見つけるために私のチームで最初に幸せな小さなモルモットだったのかわからない。修正は明白かつ簡単でしたが、すべてのdllが同じ.Netランタイムを対象としています。

Visual Studioが同じソリューション内のDLLがすべて同じ.Netランタイムをターゲットとし、特にソリューションとプロジェクト参照があり、ランタイムが一致しない場合にビルドするときに警告/エラーを生成することに気づくようにしたいだけです...

1
Dano

これは質問とは少し異なりますが(Web iisではありません):サービスをデバッグしようとするとこのエラーが発生したため、検索でここに行きました-単一のソリューション内に複数のサービスがある場合、ソリューションが問題のはまだビルドされていないため、アクセスしようとするとDLLは作成されません。だから、ローカルで実行している場合は、ソリューション全体がビルドされていることを確認してください。

1
Robert Noack

私は現時点で@jeromeyersの回答に賛成票を投じることができないので、これがこの問題の解決策であることを付け加えたいと思います。

誰かがsvcファイルと関連するコントラクトファイルとコードファイルをコピーして新しいプロジェクトに貼り付けましたが、名前空間とクラス名をどこでも更新していませんでした。このエラーで始まったため、これを追跡するのは非常にイライラします。

"nameは無効な文字で開始されました。リソース 'file:/// C:/ ...の処理中にエラーが発生しました.

<%@ServiceHost "

.svcファイルを右クリックして「ブラウザで表示」を実行するとき。

1
Mark P

作業中のlocalhostサービスをホスト上の新しい場所にアップロードしたときに同じ問題が発生しました。新しい仮想ディレクトリを作成し、Visual Studio(FTP)経由でサービスを公開しました。問題が解決しました。

0
Armin

この問題のもう1つの理由は、多くの場合、wcfサービスがあるディレクトリから別のディレクトリに移動され、svcファイルが更新されていない場合です...最も簡単な解決策は、.svcファイルを再確認し、サービス定義が正しく定義されていることです。

0
Sean Haddy

私もこの問題を抱えており、IISを再起動することが魔法でした。これは非常に奇妙なエラーです。

0
ParPar

私にも同じことが起こり、ソリューションは「bin」という名前のフォルダを作成し、その中にdllを配置していました。次に、IISでWebサイトを更新します。これですべてです

0
karolanet333

enter image description hereenter image description here

WCFサービスアプリケーションを初めてホストする場合、IIS?多くの人が何らかの方法で問題を解決しました。しかし、すべてがソリューションであり、エラーがIISでのアプリケーションのホストに関するものであれば、 IISの物理パスを確認してください。Webサイトを追加するときは、以下のスクリーンショットに示すように、ソリューションの「bin」ディレクトリを指します。

0
Julius Depulla

https://msdn.Microsoft.com/en-us/library/ms733766(v = vs.100).aspx をご覧ください

IIS、またはVisual StudioのイテレートされたIIS_EXPRESSでサービスをホストするには、2つのことを行う必要があります。

1)Web.Configを更新してServiceActivationsを含める

変化する:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true">
  <serviceActivations>
    <add service="API.Service1" relativeAddress="Service1.svc"/>
 </serviceActivations>
</serviceHostingEnvironment>

2)ルートディレクトリにApp_Codeというディレクトリを作成する必要があります。ここで、サービス(例:Service1.svc)をルートディレクトリからApp_Codeディレクトリに移動する必要があります。したがって、App_Code\Service1.svcがあります。

サービスを参照すると http:// localhost:63309/Service1.svc 動作するはずです。

0
Greek God