c# - 从同一服务器上的 MVC 调用 WCF 服务时出现 SocketException

标签 c# asp.net-mvc wcf iis-7.5 asp.net-mvc-4

我有一台带 IIS 7.5 和一个 IP 的 Windows 2008 Server。 root下有两个Application,/web和/service。/web 是一个 MVC4 应用程序,而/service 是一个 WCF 4.0 服务。

当我使用来自 MVC 的服务时,我使用以下代码:

// 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();
} 

我得到以下 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

但是,我可以从服务器上的浏览器看到 10.243.6.43:80(内部地址)并成功调用该服务。 IP 不可公开访问。

我应该做什么配置才能进行这样的自引用调用?

最佳答案

这可能是环回问题(安全问题)。参见 http://support.microsoft.com/kb/896861 .

总结:

在注册表编辑器中,找到并单击以下注册表项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 用鼠标右键单击 Lsa,指向新建,然后单击 DWORD 值。 键入 DisableLoopbackCheck,然后按 ENTER。 用鼠标右键单击 DisableLoopbackCheck,然后单击 修改。 在“数值数据”框中,键入 1,然后单击“确定”。

不要遵循有关 DisableStrictNameChecking 的步骤。

您还会发现很多不这样做的理由(毕竟,您是在禁用安全检查),随后很多人说这是让 SharePoint 正常工作的唯一方法。无论如何,它将帮助您确定这是否是问题所在。

关于c# - 从同一服务器上的 MVC 调用 WCF 服务时出现 SocketException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10302517/

相关文章:

c# - 根据用户输入的子域使MVC App连接到不同的数据库

c# - 删除 GIT 中的一些提交

c# - Fluent NHibernate 日期时间 UTC

c# - 在 C# 中创建一个表达式树

asp.net-mvc - 如何使用 ASP.NET MVC 3 编辑 IEnumerable<T>?

.net - 仅当 Fiddler 打开时才能访问 WCF 服务

c# - 表单中的 MVC4 多按钮不工作 JQM

asp.net - ASP.NET MVC 中的单元测试如何比 Web 窗体更好?

wcf - 如何实现所有方法都应该调用的基本方法?

.net - 从 WCF/ADO.NET 数据服务中的请求正文接收参数