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!

  • 5he11

    thx a lot ! it helps

  • http://www.alfanumeric.com.ni Joel R.

    Hey many thanks for this post, i’ve been hours trying to solve this problem, thanks again

  • Nick

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

  • Sivaram

    Thanks a lot for the post. I had a similiar issue. Your solution resolved the issue.

  • TC

    Thankyou! This solved my problem.

  • Charlie

    Thank you very much! I wouldn’t have come to this solution on my own!

  • Pingback: WCF service in IIS needs write access to windows temp directory « Shashi's Blog()

  • Feng

    Thank you! You save my time! :-)

  • Eking

    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

  • emizzle

    Thanks, mate! Worked like a charm!

  • http://www.discount-nike-dunk-shoes.com nike dunk sb shoes

    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

  • SandraMillhouse

    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.

  • Aviad

    Worked for me, thanks!

  • Ramesh Pydi

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

  • Aasmund

    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!

  • Hrmz

    Many many… Thanx

  • chandu

    thanks for the nice information

  • Deepka Gaur20

    it’s working fine.. thanks buddy.. it’s really nice implementation

  • http://twitter.com/SrBichi Miguel Angel Morán

    Thank you, thank you! This error was driving me crazy!!!!

  • http://twitter.com/blakehaas blakehaas

    YOu have no idea how long i’ve been fighting with this… Thank you.

  • sushil Jadhav

    Thank you. Thank you. Thank you. Finally my search stopped. :)

  • VipeR

    THX!!!

  • Luciano

    THX! You save my head …

  • http://geekyweekly.com Andrew

    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!!!!!!

  • zviadi

    thanks a lot it worked. I gave IIS_IUSRS read write permissions to Windows/Temp folder and worked :)

  • Pingback: kosfiz.ru » Blog Archive » WCF: метаданные содержат ссылки, которые не могут быть разрешены()

  • Sirakovich

    Thanks a lot!!!

  • shadower

    muchas gracias…. simple y preciso. thanks

  • joj

    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

  • Milind

    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

  • Hamid

    Thank you very much, I spend half a day on this before I find your post.

  • Bella

    I am so happy… now my program is works. I want to cry. Thank you so much.

  • Bella

    I spent two weeks. hahhahaa

  • Naresh

    thank god. we need to give permission to users

  • Karthik

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