【发布时间】:2019-01-18 01:59:27
【问题描述】:
我正在尝试向我的 API 添加新方法。
该方法的目标是返回Partenaires 的列表,其中包含给定的Prestation。
当我通过 GET 请求调用该方法时,我的 API 的应用程序池崩溃。在事件日志中,我有一个名为 Microsoft-Windows-WAS 的警告,链接的错误是:
为应用程序池“UphairApi2”提供服务的进程与 Windows 进程激活服务发生了致命的通信错误。进程 ID 为“3960”。数据字段包含错误号。
网络开发者工具说加载响应数据失败。
加载响应数据失败
当我返回return db.Partenaires.Where(p => p.PartenairePrestations.Any(pp => pp.Prestation.NomPrestation == prestation.Value)).ToString();,这是返回的请求:
“选择\r\n
Extent1.IdPartenaire, \r\nExtent1.FirstName, \r\nExtent1.LastName, \r\nExtent1.@ 987654331@, \r\nExtent1.Password, \r\nExtent1.PasswordSalt, \r\nExtent1.Type, \r\nExtent1.Pays, \r\nExtent1.Ville, \r\nExtent1.CodePostale, \r\nExtent1.Adresse, \r\nExtent1.Lat, \ r\nExtent1.Lng, \r\nExtent1.ImageUrl, \r\nExtent1.CouvertureUrl, \r\nExtent1.DateNaissance, \r\ nExtent1.ADomicile, \r\nExtent1.SeDeplace, \r\nExtent1.DateAjout, \r\nExtent1.AdresseComplement, \r\n@ 987654364@.TelMobile, \r\nExtent1.ValidationAutomatique, \r\nExtent1.NotifEmailMessage, \r\nExtent1.NotifEmailReservation, \r\nExtent1.NotifEmailPaiement, \r\nExtent1.NotifEmailNewsletter, \r\nExtent1.NotifSmsMessage, \r\nExtent1.NotifSmsReservation, \r\nExtent1.@ 987654381@, \r\nExtent1.Iban, \r\nExtent1.TitulaireCompte, \r\nExtent1.IdWallet, \r\nExtent1.IdAccount, \r\nExtent1.Valide, \r\nExtent1.Son, \r\nExtent1.Push, \r\nExtent1.IdPhone\r\n来自PartenaireASExtent1\r\n \r\n1 ASC1\r\nFROMPartenairePrestationASExtent2INNER JOINPrestationASExtent3ONExtent2.IdPrestation=Extent3.IdPrestation\r\nExtent1.IdPartenaire=Extent2.IdPartenaire) AND ((Extent3.NomPrestation= @p__linq__0) OR ((Extent3.NomPrestationIS NULL) AND (@p__linq__0 IS NULL) )))"
Mysql Workbench 的等价物:
选择 Extent1.IdPartenaire、Extent1.FirstName、Extent1.LastName、Extent1.Email、Extent1.Password、Extent1.PasswordSalt、Extent1.Type、Extent1.Pays、Extent1.Ville、Extent1.CodePostale、Extent1.Adresse、Extent1。纬度,Extent1.Lng,Extent1.ImageUrl,Extent1.CouvertureUrl,Extent1.DateNaissance,Extent1.ADomicile,Extent1.SeDeplace,Extent1.DateAjout,Extent1.AdresseComplement,Extent1.TelMobile,Extent1.ValidationAutomatique,Extent1.NotifEmailMessage,Extent1.NotifEmailReservation, Extent1.NotifEmailPaiement、Extent1.NotifEmailNewsletter、Extent1.NotifSmsMessage、Extent1.NotifSmsReservation、Extent1.IdUserMango、Extent1.Iban、Extent1.TitulaireCompte、Extent1.IdWallet、Extent1.IdAccount、Extent1.Valide、Extent1.Son、Extent1.Push、Extent1。 IdPhone 从 Partenaire 作为 Extent1 存在(选择 1 作为 C1 从 PartenairePrestation 作为 Extent2 INNER JOIN Prestation 作为 Extent3 ON Extent2.IdPrestation = Extent3.IdPrestation WHERE(Extent1.IdPartenaire = Extent2.IdPartenaire)和((Extent3.NomPres tation = '芭比')))
我在MysqlWorkbench中测试了这个请求,返回了一组数据。
这是我的方法:
// GET: api/Partenaires_prestations
[Authorize]
[Route("api/Partenaires_prestations")]
public List<PartenaireMapItem> GetPartenairesWithPrestations() {
Random rnd = new Random();
var queryString = Request.GetQueryNameValuePairs();
var prestation = queryString.FirstOrDefault();
return db.Partenaires.Where(p => p.PartenairePrestations.Any(pp => pp.Prestation.NomPrestation == prestation.Value))
.ToList()
.Select(p => new PartenaireMapItem {
IdPartenaire = p.IdPartenaire,
FirstName = p.FirstName,
LastName = p.LastName,
NomComplet = p.LastName.Substring(0,1).ToUpper() + ". " + p.FirstName,
Type = p.Type,
DureeMin = 50,
Lat = p.Lat,
Lng = p.Lng,
ImageUrl = p.ImageUrl,
SeDeplace = p.SeDeplace,
ADomicile = p.ADomicile,
Notes = p.NoteClientPartenaires,
Prestations = p.PartenairePrestations.Select(y => y.Prestation.NomPrestation).ToList();
}).ToList();
}
我做错了什么?
任何帮助将不胜感激,因为我在互联网上找不到另一个相关主题。
【问题讨论】:
-
有什么线索吗?我很迷茫..
标签: c# mysql entity-framework linq iis