2011-12-07 15 views
7

他にも同様の質問がありますが、動作している回答を見つけることができませんでした。サービス参照を追加してもプロキシが生成されない

私はテンプレート[GetData()とGetDataUsingDataContract()に付属している]からデフォルトのWCFサービスを作成します。
ブラウザで正常に動作します。

私はこの新しいWCFサービスを追加するために、別のウェブサイトがあります。私のURLを入力して、私は「サービス参照の追加」ん

を、サービスが起動し、私はそれを追加して「OK」をクリックします。
'App_WebReferences'の下に、私の追加サービスの名前空間が表示されます。 'ServiceReference1'、その下に 'References.svcmap'、そしてその下の.svcinfo/.wsdl/.xsdファイルがあります。

プロキシファイルは作成されませんが、<system.serviceModel>要素が適切な情報であると思われるWeb.configに追加されます。

しかし、プロキシなしで、私がアクセス/私のサービスのいずれかのメソッドを呼び出すことはできません(すなわちServiceReference1.WCFMethod1()

私は、svcutilを呼び出すプロキシを生成、私にApp_Codeに追加し、すべてはそれとして動作することができますすべきだ。
私の質問は、なぜ私のプロキシが「サービス参照の追加」で作成されていないのですか?
すべてがターゲットフレームワークの下で:.NET Frameworkの4

EDIT:

ちょうどコンソールアプリケーションを作成し、サービス参照を追加し、それはプロキシを作成しました。 問題は私のWebサイトがプロキシを作成していないことです...

+0

サービスを呼び出そうとしているページのコードビハインドにusing(Imports for VB.NET)ステートメントを追加しましたか?つまり、 .ServiceReference1;などを使用していますか? – Tim

+0

Webサイト "プロジェクト"(ファイル - >新規Webサイト)を使用している場合、実行時までプロキシは作成されず、ビルドされません。 –

+1

ジョン、はい私はそれを使用しています。だから、svcutilを使用する以外の方法はありませんか? – eych

答えて

2

ServiceReferenceを追加するときには、参照 - >新しいサービス参照を追加します。 アドバンストボタンをクリックして、 "参照されているすべてのアセンブリでタイプを再利用する"をオフにします。 このオプションでエラーが発生することがあります。

3

私はこの同じ問題を抱えており、参照されているすべてのアセンブリでリユースタイプのチェックを外すと問題が解決されています。しかし、私の場合は、参照されているライブラリのいくつかから型を再利用する必要がありました。私はthis postを発見しました。これは非常によく似た問題です。その記事では、以下の問題の修正プログラムについて説明しMicrosoft knowledge-base articleを参照:

次のシナリオを検討してください:

  • あなたは、Visual Studio 2012でASP.NET MVC4のWeb APIプロジェクトを作成します。
  • あなたは、プロジェクト内のWCFサービス参照を追加します。このシナリオでは

、サービス参照のReference.csファイルが空です。

原因

DataContractSerializerクラスは、それがサポートしないタイプ(Newtonsoft.Json.Linq.JToken)が発生したため、この問題が発生します。この場合、例外がスローされ、サービス参照の生成が停止します。

私はそのJSONライブラリを参照していませんでしたが、そのバグの説明に基づいて、参照しているライブラリの1つにも同様の問題があったはずです。私が参照していたライブラリの1つにおそらくDataContractSerializerでサポートされていないタイプが含まれていると考えました。同じ種類の例外がスローされていたため、同じ方法で失敗しました。

私の場合、犯人は同じWCFサービスの公開プロキシを含む私自身のライブラリの1つであることが分かりました。私はそれが問題を引き起こしていた公的な代理人だと思う。いずれにしても、指定された参照アセンブリの再利用タイプを選択し、アセンブリのすべてを以外のを選択すると、サービス参照によって自動的にプロキシクラスが正しく生成されます。

2

ここが主な問題です。 問題の原因は、ビジュアルスタジオで[Web参照の追加]が見つからない場合です。サービスがasmxの場合、私の場合は、これらの手順が見つかるまでプロキシクラスを生成していませんでした - > Serciceリファレンスをクリック - >詳細をクリック - >そこにWeb参照の追加が表示されます...問題は解決しました。 これが役立つことを願っています。

関連する問題