无法建立连接,因为目标机器主动拒绝 127.0.0.1:63591
No connection could be made because the target machine actively refused it 127.0.0.1:63591
这几天一直在搞这个,累坏了。我在整个 Whosebug 中进行了搜索,但我尝试过的所有方法都没有用。
我在本地机器上 运行 它并使用 SQL Management Studio 2016 作为我的 SQL 数据库。
我为解决此问题所做的工作是:
- 关闭了我所有的防火墙设置。
- 在我的网络上打开了端口。
- 检查代码是否正确。
- 使用
netstat -ab
检查端口,它显示我运行的端口在SqlServer下的0.0.0.0:63591
上,但不在127.0.0.1
(本地主机)下应该。
- 我已转到 IIS 并启用目录浏览。
- 我创建了一个名为 Food.aspx 的默认文档(读入 post 进行尝试)但它没有用。
- 我尝试将身份更改为本地管理员用户帐户,但都失败了
提示密码无效
- 我检查了每个 link,并尝试了我能找到的所有选项。最后,它给我一个 500 错误,这意味着服务器错误。查看堆栈跟踪,这是下面的错误。
- 我尝试远程登录它,但没有成功
如果你能帮助我那就太好了
您确定您的数据库实例是运行吗?在你的 SQL 服务器的配置管理器和默认端口中检查它。
之后,与您的网络配置连接字符串中的端口号进行比较。
<connectionStrings>
<clear/>
<add name="xxxxx" connectionString="metadata=res://*/xxxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\xxxxxx;Initial Catalog=xx;Persist Security Info=True;User ID=yyy;Password=yyyy;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient"/></connectionStrings>
所以,在我调试了你的代码之后,我发现了你的解决方案中的问题。
1-**此问题的第一个原因是 **"Self referencing loop detected for property",因为您正在尝试直接序列化 Entity Framework 对象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-**第二题是**"The entity or complex type 'Model' cannot be constructed in a LINQ to Entities query".
要解决这个问题,您可以像这样创建食物 Class 的伪 Class
一:
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" 并最终检索您的记录。
这几天一直在搞这个,累坏了。我在整个 Whosebug 中进行了搜索,但我尝试过的所有方法都没有用。
我在本地机器上 运行 它并使用 SQL Management Studio 2016 作为我的 SQL 数据库。
我为解决此问题所做的工作是:
- 关闭了我所有的防火墙设置。
- 在我的网络上打开了端口。
- 检查代码是否正确。
- 使用
netstat -ab
检查端口,它显示我运行的端口在SqlServer下的0.0.0.0:63591
上,但不在127.0.0.1
(本地主机)下应该。 - 我已转到 IIS 并启用目录浏览。
- 我创建了一个名为 Food.aspx 的默认文档(读入 post 进行尝试)但它没有用。
- 我尝试将身份更改为本地管理员用户帐户,但都失败了 提示密码无效
- 我检查了每个 link,并尝试了我能找到的所有选项。最后,它给我一个 500 错误,这意味着服务器错误。查看堆栈跟踪,这是下面的错误。
- 我尝试远程登录它,但没有成功
如果你能帮助我那就太好了
您确定您的数据库实例是运行吗?在你的 SQL 服务器的配置管理器和默认端口中检查它。
之后,与您的网络配置连接字符串中的端口号进行比较。
<connectionStrings>
<clear/>
<add name="xxxxx" connectionString="metadata=res://*/xxxx.csdl|res://*/xxx.ssdl|res://*/xxx.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\xxxxxx;Initial Catalog=xx;Persist Security Info=True;User ID=yyy;Password=yyyy;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient"/></connectionStrings>
所以,在我调试了你的代码之后,我发现了你的解决方案中的问题。
1-**此问题的第一个原因是 **"Self referencing loop detected for property",因为您正在尝试直接序列化 Entity Framework 对象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-**第二题是**"The entity or complex type 'Model' cannot be constructed in a LINQ to Entities query".
要解决这个问题,您可以像这样创建食物 Class 的伪 Class 一:
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" 并最终检索您的记录。