IIS 7.5でホストされているWCFサービスがあります。テスト用と本番用の2つのサーバーがあります。
このサービスはテストサーバーでは正常に機能しますが、運用サーバーでは次のエラーが発生します。
アドレスにアクセスするとhttp://..../service.svc
次のようなデフォルトのページが表示されます。
サービスを作成しました。
このサービスをテストするには、クライアントを作成し、それを使用してサービスを呼び出す必要があります。これは、次の構文でコマンドラインからsvcutil.exeツールを使用して実行できます。
svcutil.exe http://..../service.svc?wsdl
これにより、クライアントクラスを含む構成ファイルとコードファイルが生成されます。 2つのファイルをクライアントアプリケーションに追加し、生成されたクライアントクラスを使用してサービスを呼び出します。
しかし、wsdlリンクをクリックすると、wsdlページに移動できません。エラーなしでこのデフォルトのWebページに戻ります。ネットワーク/ファイアウォール認証エラーが疑われますが、誰かがこのような経験をしていますか?
すべてのIIS設定は、テストサーバーと本番サーバーで同じです。
よろしくお願いします。
同じ問題がありました。 httpsGetEnabledをserviceBehaviors> behaviorに追加して、次のように修正しました。
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
多分それは他の誰かを助けます。 4年後にこのヒントが必要だとは思わないでください=)
WCFサービスのWSDLを参照できるようにするには、基本的に3つのことが必要です。
したがって、サーバー側の構成は次のようになります(さらにもう少し多くのものがあります)。
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MetadataBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MetadataBehavior" name="YourService">
<endpoint address=""
binding="basicHttpBinding"
contract="IYourService" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
ポイント1と2は、次の行で処理されます。
<serviceMetadata httpGetEnabled="true" />
サービスをアクティブにするには、<service>
タグでそのサービスの動作を参照する必要があります。
ポイント3(MEXエンドポイント)はここのこのセクションです:
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
Httpの場合、mexHttpBinding
を使用し、IMetadataExchange
コントラクトはメタデータ交換用のWCFシステムコントラクトです。
私はその答えがとても遅いことを知っていますが、私は同じ問題を抱えていました、そして解決策は:
サービス[ServiceContract]
に実装されているインターフェースにタグ[OperationContract]
と.svc
を追加します。 Visual Studioは、WCF Service
を選択するとインターフェイスを作成しますが、インターフェイスを削除して、独自のインターフェイスを作成しました。
[ServiceContract]
public interface IService1
{
[OperationContract]
void DoWork();
}
私は誰かを助けたいと思っています。