web-dev-qa-db-ja.com

WCFテストクライアントはサービスを追加できず、メタデータを取得できません

サービスを追加しようとしたときにこのエラーが発生する理由を誰かに教えてもらえますか?

エラー: http:// myserver/myapp からメタデータを取得できません。これがアクセス権のあるWindows(R)Communication Foundationサービスである場合は、指定されたアドレスでメタデータの発行が有効になっていることを確認してください。メタデータの公開を有効にする方法については、MSDNのドキュメント http://go.Microsoft.com/fwlink/?LinkId=65455 を参照してください。 WS-Metadata ExchangeエラーURI: http:// myserver/myapp メタデータに解決できない参照が含まれています: ' http:// myserver/myapp '。リモートサーバーが予期しない応答を返しました:(405)メソッドが許可されていません。リモートサーバーがエラーを返しました:(405)メソッドが許可されていません。HTTPGETエラーURI: http:// myserver/myapp ダウンロード中にエラーが発生しました ' http:// myserver/myapp '。リクエストはHTTPステータス403:Forbiddenで失敗しました。

更新:私は次のエンドポイントをすでに持っています、

<endpoint address="mex" 
          binding="mexHttpBinding"
          name="Metadata"
          contract="IMetadataExchange" />

また、サービスの動作を設定しています。

  <serviceBehaviors>
    <behavior name="myBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
11
hyprsleepy

私はそれを考え出した。エンドポイントの1つで絶対パスを使用していて、複数のパスがありました。私はそれを相対パスに変更し、それからすべてがうまくいきました。

また、サービスが実行されておらず、メタデータとは何の関係もない場合にも発生する可能性があります。 ConfigurationErrorsExceptionがある場合は、この結果も表示されます。

プロジェクトの構成変更を保存しようとしたときにも取得し、保存/上書き/無視などを指示しました。最終的に「デザイナー」のプロジェクトサブタイプが追加され、削除すると正常に機能するようになりました。

5
hyprsleepy

この問題が発生しました。svcファイルの名前を変更したときに、その参照がService1.svcから変更されていなかったことがわかりました。プロジェクト全体の検索を実行し、.Service1を新しい名前に置き換えます。

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="MyRenamedService.svc.cs" %>

Service="MyNamespace.Service1"Service="MyNamespace.MyRenamedService"と読む必要があります

10
GJKH

これは、いずれかの関数からカスタムクラスオブジェクトを返そうとしたときに、その関数のクラス宣言に[DataContract]属性がない場合にも発生する可能性があります。 WCFは、戻り値のタイプを判別できないため、標準メッセージをスローします。

[Serializable]
[DataContract]
public class ServiceResult
{
  ....
}
9
Kevbo

場合によっては、メタデータや設定で何もする必要がないこともあります。代わりに、http:\ localhost \の代わりに127.0.0.1を使用します。

1
Dani Mathew

辞書から継承したDataContractを使用していたため、同じエラーが発生することを発見しました。 DataContractの適切なセットアップは、次のとおりです。

[CollectionDataContract(Name = "AdditionalProperties",
                            ItemName = "Property",
                            KeyName = "Key",
                            ValueName = "Value")]
public class AdditionalProperties : Dictionary<string, string>
{
}
0
Andrew

エラーのテキストをすべて確認して読んでください。

私の場合、別のdllにエラーがありますが、上記のエラーテキストに同じエラーが表示されます。

0
Ali Rasouli

そのアドレスを解決できること、および正しい仮想ディレクトリを指定していることを確認してください。 myserverは、たとえばping myserverのIPに解決されますか? myappは正しい仮想ディレクトリですか? wcfサービスのメタデータを有効にしましたが、URLが間違っている可能性があります。

0
Tore Aurstad

これは、このエラーメッセージに関する私の経験です。他の人に役立つかもしれません。私のWCFサービスはWindows 2008サーバーで正常に機能しています。同じソリューションをDevマシンにコピーし、ソリューションから.svcファイルを選択して、WCFテストクライアントをポップアップできるようにしました。

エラーで開かれたWCFテストクライアントはメタデータを取得できません。アセンブリをロードできません。

重要なのは、まずサービス( http:// localhost:port/Service )を起動してから、WCFテストクライアントのみを試すことです。

0
user2211290

メタデータエンドポイントの追加が問題ではない場合。エラーメッセージの詳細をさらに確認してください。ライブラリがありませんでした。 「ファイルまたはアセンブリを読み込めませんでした*」。

参照をCopy Local = Trueに変更する必要がありました

0
Eric Schneider

私はWCFを使い始めたばかりですが、内部にWCFサービスを備えたプロジェクトが手に入りました。 Win7のVS2010でWCFテストクライアントを使用すると、同様の問題が発生しました。この記事やその他の構成変更をすべて試した後も、同様のエラーが発生しました。

そこで私はあきらめて、WCFについて読み始めました。ここで、VSを管理者として起動する必要があることがわかりました。これが記事です: Getting Started Tutorial WCF 「管理者として実行」がチェックされた状態でVS2010を起動する必要があることがわかりました。これで問題が解決し、VS2010でWCFサービスをテストできました。他の人が管理者として実行するのを見落とした場合に備えて、この回答を投稿します。

0
CW30Meters

私の場合、BindingParams.AllowHttpGetを有効にしていませんでした。それがtrueに設定されたとき、それはうまくいきました...

0
user007