【问题标题】:No connection could be made because the target machine actively refused it 127.0.0.1:63591无法建立连接,因为目标机器主动拒绝它 127.0.0.1:63591
【发布时间】:2018-07-12 08:52:00
【问题描述】:

我已经为此工作了几天,并用尽了一切。我在整个 stackoverflow 中进行了搜索,但我尝试过的所有方法都不起作用。

我在本地机器上运行它,并使用 SQL Management Studio 2016 作为我的 SQL 数据库。

我为解决这个问题所做的工作是:

  • 关闭了我所有的防火墙设置。
  • 在我的网络上打开了端口。
  • 检查代码是否正确。
  • 使用netstat -ab检查端口,它显示我正在运行的端口在SqlServer下的0.0.0.0:63591上,而不是在127.0.0.1(本地主机)下,就像它应该的那样。
  • 我已进入 IIS 并启用了目录浏览功能。
  • 我创建了一个名为 Food.aspx 的默认文档(请阅读帖子尝试一下),但它不起作用。
  • 我试图将身份更改为本地管理员用户帐户,但全部 据说密码无效。

  • 我检查了每个链接,并尝试了所有我能找到的选项。最后,它给了我一个 500 错误,这意味着服务器错误。查看堆栈跟踪,它是下面的错误。
  • 我尝试 telnet 却不工作

如果你能帮助我,那就太好了

【问题讨论】:

  • 你忘了解释你的服务器是什么,你的客户端是什么,它们是如何通信的。如果您需要帮助,请阅读How to Ask
  • 等一下,您是否已将 SQL 服务器配置为在 63591 端口上运行,或者您的 Web 应用程序在 IIS 中配置为在 63591 上运行?这一切都非常混乱。
  • 欢迎来到Stack Overflow!演示为王!您的一些图像非常大。裁剪它们将对读者有很大帮助。
  • 我在本地主机上运行它。我的网络应用程序配置为在端口 65391 上运行
  • 我认为这不是 IIS 安装问题。这听起来更像是您认为 IIS 在 65391 上运行,但事实并非如此。你必须找出为什么它不是。根据您提供的信息,我们无法为您提供帮助。

标签: c# wcf iis asp.net-web-api iis-7


【解决方案1】:

您确定您的数据库实例正在运行吗?在 SQL Server 的配置管理器中检查它以及默认端口。

之后,与您的网络配置连接字符串中的端口号进行比较。

<connectionStrings>
<clear/>
<add name="xxxxx" connectionString="metadata=res://*/xxxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\xxxxxx;Initial Catalog=xx;Persist Security Info=True;User ID=yyy;Password=yyyy;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient"/></connectionStrings>

所以,在我调试了你的代码之后,我发现了你的解决方案中的问题。

1-**此问题的第一个原因是**“检测到属性的自引用循环”,因为您正在尝试使用 public IQueryable GetFoods() 直接序列化实体框架对象.由于 Food 有 MealFood 并且 MealFood 有对 Food 的引用,所以它不能被序列化。

解决方案是在您的 Global.asax 中添加此代码 GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;

你的方法是这样的:

protected void Application_Start(){ GlobalConfiguration.Configure(WebApiConfig.Register); GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; }

这里我们需要为 JSON.Net 序列化器定义全局设置以忽略循环引用。

2-**第二个问题是**“无法在 LINQ to Entities 查询中构造实体或复杂类型‘模型’”

要解决此问题,您可以像这样创建食品类的伪类 一:

public class PseudoFood
{
public int FoodID { get; set; }
public string FoodName { get; set; }
public int Calories { get; set; }
public string Notes { get; set; }
}

在可以使用此方法查询您的数据库之后。

public IQueryable<PseudoFood> GetFoods()
{    
      return (from a in db.Foods
                    orderby a.FoodName descending
                    select new PseudoFood()
                    {
                        FoodName = a.FoodName,
                        FoodID = a.FoodID,
                        Calories = a.Calories,
                        Notes = a.Notes
                    }
             ).AsQueryable();    
}

返回 PseudoFood "IQueryable" 并最终检索您的记录。

【讨论】:

  • 是的,SQL 服务器正在运行并且端口为 1433。我在同一个应用程序池中有另一个项目运行良好并使用同一个数据库。当我尝试使用 web api 发送获取请求以收集表中的所有食物时,似乎不起作用。它给出了 500 错误并说它已拒绝所有连接
  • pastebin.com/5CLvnP8r,它只是一个简单的单页应用程序来测试。对于您之前关于连接字符串中端口号的问题。你的 XXXX 所在的地方就是“MealPlanner”,它是 ADO.NET 实体数据模型
  • 我知道,我把它改回 63591。我对编程有点陌生。原来是63591,后来改成1433,发现这个端口被SQL server占用了。
  • 是的,这个端口被 Sql Sever 使用,好吧,你需要在你的 web 配置中配置对数据库的访问。将您的网络配置发送给我,我会为您完成。您还必须将您的 api/foods 与基地址连接起来,例如 HttpResponseMessage response = client.GetAsync(client.BaseAddress+"api/foods").Result;
  • 我只有一个代表,我不能聊天。你介意我在linkedin上联系你吗?
猜你喜欢
  • 2015-04-05
  • 2012-03-30
  • 2017-06-06
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 1970-01-01
相关资源
最近更新 更多