Hi. My web app currently uses the old FedEx WSDL API for rates and tracking and I have to now test it for FedEx's SHA-2 changes coming in Jan 2016.

I am a little confused about how to easily switch between "Production Environment" and "Test Environment" and need some advice.

I will first explain how the Web Service is currently integrated into my app so you understand the context of my question:

I initially uploaded the FedEx WSDL files to my second server (not the actual server the website app is on) and "Added Web Reference" to the remote url in my project. This may not have been necessary and there may have been an easier way (locally for instance) but because I did not fully understand how it all works this was the easiest route for me at the time.

This created an "App_WebReferences" folder within my project and within that a WSDL file and a discomap file for the track and rate services.

I also have two key/value pairs in my Web.config file under <appSettings> that point to these web references and gateway.fedex.com. I can't remember if I manually created them or if the WSDL import did it automatically.

I know that for testing purposes I need to use the "gatewaybeta.fedex.com" url and my FedEx "Test Credentials" not my "Production Credentials" but I am confused how it all works and where exactly I need to swap over the endpoint urls.

For instance, can I just change the url in the Web.config file or do I have to also change it in the WebReference and the original imported WSDL files that are on my second remote server?

After the import, is the WSDL file on the second remote server even needed or used in a live call by my app to the FedEx web service or can it be deleted now?

The discomap file references the original wsdl file location on my second server so how does that work and what would happen if I deleted the wsdl file from my second server?

Ultimately what I would like to do is create a simple admin FedEx web page with a basic form on it where I can enter a default FedEx tracking number and/or shipment details and then select from a drop-down list between TEST and PRODUCTION and have the aspx.vb code handle the url/credential changes so I don't have to manually change wsdls and webreferences and web.config file keys etc.

Hope someone can clarify this for me and set me on the right track!


Usually, you will add the web service reference locally in Visual Studio. When you publish your website (for deployment) all relevant files will be created for use on the web server (including everything needed for the WSDL). The only thing you have to do is backup and replace all old files on IIS with the new ones.