WCF Add Service Reference gotcha with Windows Server

We recently switched from developing in Vista to Windows Server 2003. Someone had the bright idea that we should develop in the same environment the application is going to be hosted on. Go figure.

What that meant is that you run into wierd issues like this one. When trying to add a Service Reference to a WCF service hosted under IIS you keep getting this 'Add Service Reference Error':

Metadata contains a reference that cannot be resolved: 'http://merill/Services.Host/ClientProfile.svc?wsdl'.
The WSDL document contains links that could not be resolved.
There was an error downloading 'http://merill/Services.Host/ClientProfile.svc?xsd=xsd0'.
The underlying connection was closed: An unexpected error occurred on a receive.
Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
An existing connection was forcibly closed by the remote host
Metadata contains a reference that cannot be resolved: 'http://localhost/Services.Host/ClientProfile.svc'.
Metadata contains a reference that cannot be resolved: 'http://localhost/Services.Host/ClientProfile.svc'.
If the service is defined in the current solution, try building the solution and adding the service reference again.

The key part of this message is the reference to the downloading of the xsd. When I tried accessing the .svc url in a browser it worked fine, but trying to access the .svc?xsd=xsd0 brings up the generic 'cannot display webpage' message.

When you unleash your weapon (Process Monitor) on the csc.exe process (this is the compiler generating the xsd) you'll realise that the IIS identity IIS_WPG does not have access to the Windows\Temp folder. Give enough rights to the folder and viola problemo solved.

Happy WCF programming on Windows Server!

WCF Add Service Reference gotcha with Windows Server

35 thoughts on “WCF Add Service Reference gotcha with Windows Server

  1. Nick says:

    That was the most helpful article I have found on this issue. No way I would have thought of looking for directory permissions. Thanks.

  2. […] WCF service in IIS needs write access to windows temp directory By skuppa I migrated my WCF services to Prod windows 2003 box and started getting the following error. Error: Cannot import wsdl:portTypeDetail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporterError: Schema with target namespace 'http://www.odh.ohio.gov/ELR2/contract' could not be found After initially being perplexed at what could have gone wrong and frantically searching for resolution on google found this blog post. […]

  3. Eking says:

    Hi there- i got exactly the same problem but the solution provided here didnt help me… in my error it also says …..401: Access Denied….The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Negotiate,NTLM'….
    PLEASE HELP – IT CONSUMED MORE THAN A FEW WORK DAYS TO ME!!
    Thank you all in advance

  4. I totally agree the standpoint of upstairs, and I believe this will be a trend. I often come this forum , rom here I learn much and know the newest tide! the content here constantly update shoe and I love it! Another I know some websites which often update their contents, you guys should browse if you are free. http://inin-from.com

  5. SandraMillhouse says:

    It seems that the Windows server was created to make our lives a living hell! I'm just kidding. Yes, this type of server has made many programmer's lives unhappy but that happens with any type of equipment. I use Windows for my VPS hosting although a year ago I was using Linux. Can't really see a difference.

  6. Ramesh Pydi says:

    i am also getting the same problem. I given full permissions on windowsTemp folders for IISUSers. still same error. please help me out !!

  7. Aasmund says:

    Fantastic – I would never have occurred to me that permissions on the temp folder could be the source of the problem. (Looks like I should invest some time in learning Process Monitor.) This saved a lot of hair-pulling; thank you!

  8. Holy crap, thank you so much. I was pulling my hair out over the past 4 hours trying to get our WCF service running correctly on a production machine with HTTPS. Gave the IIS_USERS rights to Windows/Temp and poof, XSD files were available. THANK YOU!!!!!!

  9. joj says:

    i don’t understand enough to do what you explain .i see that it will resolved my problem but i don’t know how to do it can you help me ?
    i find the file in c/windows but i have to do there ?
    thank’s for all

  10. Milind says:

    Amazing, it worked for me. I was so frust with this issue and tried n number of things finally come across this post and its working now. Thanks so much

  11. Karthik says:

    Thank you very much!! Dude, you have saved us!! Spent almost 2 hours without any luck before seeing this.

Comments are closed.