我遇到了Breeze的一个问题,当我尝试在我的控制器上调用元数据操作时,它们会因504错误而失败。
近似的电话是 //服务器/微风/控制器/元数据
环境
在负载均衡的Win 2k8 Azure虚拟机上通过IIS7运行的Web Api
版本(通过NuGet安装) Breeze Client 1.4.2 Breeze客户端和服务器1.4.2 Breeze Server - 适用于ASP.NET Web Api(Core)1.4.2 Breeze Server - 适用于ASP.NET Web Api和Entity Framework 1.4.2
更新:升级到Breeze 1.4.5没有任何区别
以前它运行良好,最近唯一的变化就是引入负载均衡。
值得注意的是,我还有多个控制器,每个控制器都有自己的元数据。
成功运行的案例
失败的案例
运行简单测试以返回字符串时,例如:
[HttpGet]
public string Metadata()
{
return "This was a test";
}
出于某种原因,Breeze似乎不喜欢我的控制器中的元数据功能。
更新
它看起来与使用负载平衡端点没有特别相关,因为我尝试将其设置为直接在端口8080上运行,并且具有非负载平衡端点并且具有相同的问题。
IIS失败请求跟踪似乎没有记录失败请求的任何内容,尽管请求确实出现在IIS日志中。
答案 0 :(得分:1)
从0.72更新到1.41并将路径从api / {controller} / {action}更改为breeze / {controller} / {action}后,我遇到了同样的问题。我没有得到微风人的回答所以我撤回了这个问题。
但是,我现在认为问题是权限。 Localhost:VS中的50033作为我运行,我有一个SQL Server帐户,所以我觉得它很酷。部署到我的本地IIS和测试服务器IIS后,我收到500错误。
我终于进入了jquery代码,并从jqXHR确定,错误是SQL没有处理匿名用户的凭据;一个Doh!如果有的话,那一刻。我在web.config中更改了连接字符串,并且确实如此。
<!--<add name="PilotPlant" connectionString="Data Source=dataweb;Database=PilotPlant;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />-->
<add name="PilotPlant" connectionString="Data Source=dataweb;Database=PilotPlant;Trusted_Connection=no;User Id=sa;Password=sapassword" providerName="System.Data.SqlClient"/>
这不太安全,但我在防火墙内部运行,所以对我来说这不是问题。
所以我的答案是检查您对群集的权限。我希望这会有所帮助。