无法建立与目标计算机的联系,无法建立连接,因为目标计算机主动拒绝它127.0.0.1:63591(示例代码)...

我已经在这方面工作了几天而且已经筋疲力尽了。我已经搜索了stackoverflow,但我尝试过的一切都没有用。

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

我试图解决这个问题的方法是:

关闭所有防火墙设置。

打开我网络上的端口。

检查代码是否正确。

使用netstat -ab来检查端口,它显示我运行的端口是在SqlServer下的0.0.0.0:63591但不是在127.0.0.1(Localhost)下应该是这样。

我已经去了IIS并启用了目录浏览。

我创建了一个名为Food.aspx的默认文档(在帖子中阅读以尝试它)并且它不起作用。

我试图将身份更改为本地管理员用户帐户,但所有人都说密码无效。

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

我试图telnet它并不起作用

如果你能帮助我那会很棒

答案

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

eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS80Z3ZhMC5wbmcifQ==eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9NQ1pTeC5wbmcifQ==

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

因此,在我调试代码后,我发现了解决方案中的问题。

1 - **此问题的第一个原因是**“为属性检测到自引用循环”,因为您正在尝试使用公共IQueryable GetFoods()直接序列化Entity Framework对象。由于Food有MealFood而且MealFood有参考食物,它不能序列化。

解决方案是在您的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 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”并最终检索您的记录。

eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9KS2kwVS5wbmcifQ==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值