8
votes

I have a Windows 2008 Server with IIS 7.5 and one IP. There are two Application under the root, /web and /service. /web is a MVC4 application, and /service is a WCF 4.0 service.

When I consume the service from MVC, I use the following code:

// Create the web request  
HttpWebRequest request = WebRequest.Create(TripServiceUrl + id) as HttpWebRequest;

// Get response  
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
    // Get the response stream  
    StreamReader reader = new StreamReader(response.GetResponseStream());

    // Console application output  
    tripJson = reader.ReadToEnd();
} 

I get the following SocketException:

[SocketException (0x274c): A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.243.6.43:80]
System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) +273
System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) +584

However, I can see 10.243.6.43:80 (an internal address) from a browser on the server and successfully call the service. The IP is not publicly accessible.

What configuration should I have to do to make a self referential call like that work?

1
Why are you using a WebRequest to consume a WCF service instead of a strongly typed client proxy?Darin Dimitrov
You could apply the same binding configuration on the client as you have on the server and use a strongly typed proxy to consume it and leave the serialization stuff to the infrastructure. Anyway, it's off-topic actually, it is not what is causing you issues in this case.Darin Dimitrov
I did not know one could do that!Bill Sempf
Is 10.243.6.43:80 browser accessible from the server itself?Kenneth Ito
Yes it is. I mention it above.Bill Sempf

1 Answers

1
votes

It's probably a loopback problem (security issue). See http://support.microsoft.com/kb/896861.

To summarize:

In Registry Editor, locate and then click the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa Right-click Lsa, point to New, and then click DWORD Value. Type DisableLoopbackCheck, and then press ENTER. Right-click DisableLoopbackCheck, and then click Modify. In the Value data box, type 1, and then click OK.

Don't follow the step about DisableStrictNameChecking.

You'll also find a lot of reasons not to do this (you are, after all, disabling a security check), followed by a lot of people saying it's the only way to get SharePoint to work properly. In any event, it will help you determine if this is the problem.