0

我遇到了 Breeze 的问题,当我尝试在我的控制器上调用元数据操作时,它们会因 504 错误而失败。

近似调用是 //servername/breeze/controller/metadata

环境

通过 IIS7 在负载平衡的 Win 2k8 Azure 虚拟机上运行的 Web Api

版本(通过 NuGet 安装) Breeze Client 1.4.2 Breeze Client 和 Server 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 没有区别

以前它工作得很好,最近唯一的变化是引入了负载平衡。

值得注意的是,我还有多个控制器,每个控制器都有自己的元数据。

成功运行的案例

  • 通过本地主机运行。
  • 从我的控制器中删除 [BreezeController] 属性
  • 重命名元数据函数

失败的案例

  • 部署时
  • 当运行一个简单的测试返回一个字符串时,例如:

    [HttpGet]
    public string Metadata()
    {
        return "This was a test";
    }
    

出于某种原因,Breeze 似乎不喜欢我的控制器中的元数据功能。

更新:

它看起来与使用负载平衡端点没有特别相关,因为我尝试将其设置为直接在端口 8080 上使用非负载平衡端点运行并且遇到同样的问题。

IIS 失败请求跟踪似乎没有记录失败请求的任何内容,尽管该请求确实出现在 IIS 日志中。

4

1 回答 1

1

在从 0.72 更新到 1.41 并将路由从 api/{controller}/{action} 更改为微风/{controller}/{action} 后,我遇到了同样的问题。我没有得到微风人的回答,所以我撤回了这个问题。

但是,我现在认为问题出在权限上。VS 中的 Localhost:50033 以我的身份运行,并且我有一个 SQL Server 帐户,所以我觉得它会很酷。部署到我的本地 IIS 和测试服务器 IIS 后,我收到 500 错误。

我终于进入了 jquery 代码并从 jqXHR 确定错误是 SQL 没有处理匿名用户的凭据;嗬!如果有的话,那一刻。我在 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"/>

这不太安全,但我在防火墙内运行,所以这对我来说不是问题。

所以我的答案是检查你对集群的权限。我希望这有帮助。

于 2013-11-11T18:57:17.463 回答