37

テスト用の単純な wcf サービスを開発しています。このサービスをローカルの IIS 7.5 でテストすると、正しく動作します。しかし、Web IIS でホストすると、次のエラーが表示されます。

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

そして私の ServiceHost は次のとおりです。

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

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

4

19 に答える 19

41

これについて調べたどの質問でもこれが提案されているのを見つけることができなかったので、ここに私のケースを追加します:

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

于 2012-12-17T22:40:43.493 に答える
21

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

これは[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が実際にデプロイされていることを確認してください

于 2011-03-12T17:00:50.757 に答える
8

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

サービスが、展開されていない DLL を参照していたことが判明しました。それはシステム dll (System.Web.Helpers) であり、プロジェクトにはそれへの参照さえなかったため、「ローカルのコピー」が true に設定されていなかったため、これは非常に特殊なケースです。

于 2012-09-12T14:27:47.113 に答える
8

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

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

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

于 2013-09-19T20:58:51.317 に答える
4

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

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

これで、サービスの .svc ファイルを参照できるようになり、クライアントがサービスを利用できるようになります。

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

于 2011-03-13T09:53:27.640 に答える
4

IIS の新しい場所 (新しいサイト) に動作中のサービスを展開した後、同じ問題が発生しました。既定の Web サイト ツリーの下にある inetmgr で、新しいサイトを右クリックして [アプリケーションに変換] を選択していませんでした。すべて機能しています。

于 2013-03-10T00:55:58.983 に答える
3

回答としてマークされた回答は、理解するのが非常に困難です。実際、それは私の同様の問題を解決することにつながりましたが、それが筆者の意図を正確に理解したからなのかどうかはわかりません。

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

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

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

于 2012-12-23T22:22:58.123 に答える
2

「SeviceHost」の「Service」に記述されている名前空間とクラスが正しいか確認してくださいService="namespace.classname"

于 2016-08-04T06:18:14.730 に答える
1

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

于 2012-10-09T13:38:43.063 に答える
1

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

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

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

<%@ ServiceHost "

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

于 2013-02-05T17:23:06.040 に答える
1

私のソリューションに埋め込まれたテストプロジェクトを実行すると、この問題が発生しました。

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

于 2014-02-13T16:44:30.343 に答える
0

私にも同じことが起こり、解決策は「bin」という名前のフォルダーを作成し、その中にdllを配置することでした。次に、IIS で Web サイトを更新します。

于 2014-05-07T08:57:42.723 に答える
0

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

于 2014-03-31T17:10:00.333 に答える
0

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

于 2014-07-31T16:43:18.133 に答える