wsdlファイルから「tempuri」参照を削除しようとしています。私は考えることができる既存のアドバイスにすべて従ってきました。実装クラスへIISでのWCF4ホスティング、WSDL:bindingNamespaceは決して読み取られません。
[ServiceBehavior(Namespace="mynamespace")]
属性を追加し、契約インターフェイスに
[ServiceContract(Namespace="mynamespace")]
を追加して、一致するように、web.configファイル内のエンドポイントの「bindingNamespace」属性を変更します。しかし(IISで)ロードされると、バインディングネームスペースは決して変更されません。常にテンポラリです。
誰もこの問題を修正する上で他の考えがありますか?以下は、Web設定のサンプルです... bindingnamespaceは、私が何をするにせよ、決してmynamespaceに更新されていません、常にtempuri.orgです。ホストファクトリを介してエンドポイントをロードした後、ホスト記述のバインディングを繰り返して更新すると、変更されますが、それはハックのようです。
サービスの場合:http://mydomain.com/MyService.svc次は、エンドポイントの設定を表していますが、これはIISでも使用されますか?依然としてWSDLでtempuri.org
<wsdl:import namespace="http://tempuri.org/" location="http://mydomain.org/MyService.svc?wsdl=wsdl0" />
........
<wsdl:service name="Directory">
<wsdl:port name="BasicHttpBinding_IDirectoryServices"
binding="i0:BasicHttpBinding_IDirectoryServices">
<soap:address location="http://mydomain.org/MyService.svc" />
</wsdl:port>
</wsdl:service>
を参照して生成されたWSDLファイルの
<services>
<service name="ServiceImplementationClassReference,MyAssembly" >
<endpoint name=""
address="MyService.svc"
binding="basicHttpBinding"
bindingNamespace="mynamespace"
bindingConfiguration=""
contract="IMyContract" />
<endpoint name="mexHttpBinding"
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
のrelavent片:定義ノードのXML名前空間i0(前述のサービスが参照する)もtempuri.orgに設定されているため、import文が必要です。 BasicHttpBindingまたはwsHttpBindingを使用すると、一時変数の使用に変更はありません。実際、web.configファイルのバインディングをwsHttpBindingに設定すると、上記の出力が得られ、BasicHttpBinding_IdirectoryServicesを参照します。
ありがとうございます!
Ladislav、はいこれは.NET 4.0です。私はwsdlファイルの関連部分を追加しました。うまくいけば、これは役に立ちます。全体が正しくポストするために混乱するまでです。私はそれが役に立つと思うかもしれない誰にでも完全なものを送ることを嬉しく思っています。ありがとう!!私はあなたの援助に感謝します。 – Kevin