web-dev-qa-db-ja.com

WCFTestClientを使用して単純なWCFWebサービスをテストするWCFエラー

「wcftestclient」を使用してAutoLotWCFServiceをテストしようとすると、次のエラーが発生します。私は何が間違っているのですか?どんな洞察も役に立ちます。これは、インターフェースコントラクトとサービスの実装を備えたwshttpbindingを備えた単純なWebサービスです。長いエラーメッセージは次のとおりです。Web.Configファイルには2つのエンドポイントがあります。1つはWebサービス自体用で、もう1つはmetaDataExchange用です。そのすべてはほとんどデフォルトのものです。必要に応じてコードを含めることができます。ここにファイルを添付できないようです。


Error: Cannot obtain Metadata from http://localhost/AutoLotWCFService/Service.svc
If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address.  
For help enabling metadata publishing, please refer to the MSDN documentation at http://go.Microsoft.com/fwlink/?LinkId=65455.
WS-Metadata Exchange Error
    URI: http://localhost/AutoLotWCFService/Service.svc
    Metadata contains a reference that cannot be resolved: 'http://localhost/AutoLotWCFService/Service.svc'.
    The remote server returned an unexpected response: (405) Method not allowed.
    The remote server returned an error: (405) Method Not Allowed.
    HTTP GET Error    URI: http://localhost/AutoLotWCFService/Service.svc
    The document at the url http://localhost/AutoLotWCFService/Service.svc was not recognized as a known document type.The error message from each known type may help you fix the problem:
    - Report from 'DISCO Document' is 'Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.'.
    - Report from 'WSDL Document' is 'There is an error in XML document (1, 2).' -Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.
    - Report from 'XML Schema' is 'Name cannot begin with the '%' character, hexadecimal value 0x25. Line 1, position 2.'.

13
Neal Unadkat

最近、IIS7でWindows VistaラップトップでWCFをホストしようとしたときに、この問題が発生しました。

私は最初に次のエラーを受け取りました:「HTTPエラー404.3-見つかりません」そして提案された解決策の1つは「現在のページの予想されるハンドラーがマップされていることを確認する」でした。

そこで、.svcファイルのハンドラーを手動で追加し、DiscoveryRequestHandlerとして定義しました。これが役立つかもしれないと考えました。これにより、上記の問題が発生しました。

実際の解決策は、追加したハンドラーを削除し、次のコマンドを実行することでした。

CD c:\windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\
ServiceModelReg -i

これで問題は解決し、サービスは正常に機能しています。これがあなたの問題に光を当てるのに役立つことを願っています。確かではありませんが、これはおそらく、開発用ラップトップにさまざまなパッケージをインストールした順序が原因です。

15

コンポーネントのインストールが機能しない場合は、修復を試してください。これにより、アンインストールしてからインストールします。

"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r
1
cja100

サービス動作構成で有効になっているメタデータタグにhttpGetEnabled = "true"が付いていることを確認する必要があります

<serviceBehaviors>
  <behavior name="serviceBehavior">
    <serviceMetadata httpGetEnabled="true">
  </behavior>
</serviceBehaviors>

さらに、サービスがその動作を参照していることを確認してください。


<service name="blah" behaviorConfiguration="serviceBehavior">
0
Craig Wilson

ありがとう;信じられないかもしれませんが、少なくともwcftestclientを介してサービスをロードする問題は、ASPNETをIIS withaspnet-regiisに再登録したときに解決されました。

次の問題は、wcftestclientを介してサービスによって公開されたメソッドを呼び出せるようにすることです。私が対処しなければならないセキュリティの問題は何ですか? Windows認証で匿名ログインを有効にする必要がありました。それでも、invokeは、アクセス違反に関連する何かを指す例外を生成しました。いくつかのことを検索する際に、呼び出すことができるように証明書をインストールすることを指します。可能であれば啓蒙してください。

0
Neal

サービスマークアップ(servicename.svcを右クリック)のservice(name)がweb.configファイルのservice(name)と一致するかどうかを確認してみてください。

乾杯!

0