Following is the wsdl file of my service:
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://localhost:3789/VideoUpload.svc?xsd=xsd0" namespace="http://tempuri.org/" />
<xsd:import schemaLocation="http://localhost:3789/VideoUpload.svc?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xsd:import schemaLocation="http://localhost:3789/VideoUpload.svc?xsd=xsd2" namespace="http://schemas.datacontract.org/2004/07/UploadVideoProtocol" />
</xsd:schema>
</wsdl:types>
-----
<wsdl:definitions>
<wsdl:service name="VideoUpload">
<wsdl:port name="BasicHttpBinding_IVideoUpload" binding="tns:BasicHttpBinding_IVideoUpload">
<soap:address location="http://localhost:3789/VideoUpload.svc" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
In the above, I could change the namespace by specifying the custom namespace inside the code in service contract and behavior.
But I need to change the endpoint address specified in the schema location,
schemaLocation="http://localhost:3789/VideoUpload.svc?xsd=xsd0"
To my own defined endpoint address as:
schemaLocation="http://myservice.com:8080/VideoUpload.svc?xsd=xsd0"
What is the procedure to achieve this? what has to be mentioned in the code to change the default endpoint generated? Can anyone please help me on this?
Best Answer
You could dynamically update the WCF endpoint address in the WSDL meta data by adding a new behavior that implements "IWsdlExportExtension"
Add your new behavior by code or in the config file.
By code:
OR
By Config:
Create extension:
Then add: