13

「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.'.

4

5 に答える 5

15

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

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

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

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

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

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

于 2009-02-24T15:51:00.580 に答える
1

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

"%WINDIR%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\ServiceModelReg.exe" -r
于 2011-03-19T10:55:24.500 に答える
0

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

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

于 2008-10-13T15:52:40.027 に答える
0

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

乾杯!

于 2010-06-15T09:02:23.087 に答える
0

サービス動作構成の有効化に httpGetEnabled="true" のメタデータ タグがあることを確認する必要があります。

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

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


<service name="blah" behaviorConfiguration="serviceBehavior">
于 2008-10-09T22:34:48.090 に答える