刚开始使用Breeze和Azure。我下载了示例应用程序并添加了自己的控制器。在我的本地机器上工作得很好。当我部署到我的Azure站点时,我在页面的日志记录部分中不断收到以下错误:查询失败:元数据查询失败:api / CoreData / Metadata;发生错误。
我有一个名为Products的控制器只返回一个视图。该视图包含对我的CoreData ApiController的js调用。关注样本。
服务器上记录的唯一内容如下:
起初我使用EF来访问数据,但已经改为只创建一个内存中对象并将其返回以消除数据库问题。
网址为http://acapella.azurewebsites.net/products。我花了很多时间来尝试诊断和研究,但觉得我忽视了一些简单的事情。
任何帮助或建议都将不胜感激。
答案 0 :(得分:1)
Azure网站是一种免费,相对简单的方式来部署Breeze应用程序,您可以在各种移动设备上测试它,体验应用程序的响应能力(或缺乏响应能力)。
我在将一个Breeze应用程序推送到Azure网站上取得了很大的成功,但有很多失误,包括一些看起来像你的应用程序。
两个想法。首先,您需要在Web.config中关闭“自定义错误”。
<configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration>
我的第二个建议:看看John Papa's post on deploying an MVC Web API app to an Azure web site。这很棒。我知道它有效。
我希望很快能有关于这个过程的视频。
答案 1 :(得分:0)
您可以做的第一件事就是返回异常。在你的Breeze控制器中执行以下操作:
[HttpGet]
public string Metadata()
{
try
{
return _contextProvider.Metadata();
}
catch (Exception e)
{
return e.Message + Environment.NewLine + Environment.NewLine + e.StackTrace;
}
}
这让我很清楚我的连接字符串出了什么问题。我得到的例外是:
Format of the initialization string does not conform to specification starting at index 0.
我的本地连接字符串似乎没问题,但问题出在Azure上。我的web.release.config有一个正确的转换,但在发布时,Visual Studio会添加另一个连接字符串。您可以通过将FTP连接到Azure站点并查看web.config来进行检查。我通过在发布时选择正确的连接字符串来修复它:
之后,我上传的web.config中似乎仍然有两个连接字符串,但至少它可以工作。