nuget移动服务.net后端在nuget包更新后无法正常工作

时间:2014-08-25 09:46:26

标签: azure-mobile-services

更新以前运行的Azure移动服务(.Net后端)的nu-get软件包后,我现在在访问表控制器时出现以下错误:

An error has occurred.","exceptionMessage":"Object reference not set to an instance of an 
object.",
"exceptionType":"System.NullReferenceException",
"stackTrace":"at Microsoft.WindowsAzure.Mobile.Service.Serialization. 
SelectExpandWrapperConverter.ODataReflectedTypes..ctor() 
at Microsoft.WindowsAzure.Mobile.Service.Serialization ...

自定义控制器似乎不受影响。

我可能错过了一些明显的东西,但我看不到它

任何帮助将不胜感激

非常感谢

ķ。

2 个答案:

答案 0 :(得分:4)

来自Henrik F. Nielsen的answer in the MSDN forums

  

与最近一次更新的同一天发布的最新版本的ASP.NET Web API存在已知的不兼容性。我们正在进行更新,但同时请不要更新所有NuGets,而只是 WindowsAzure.MobileServices。*软件包 - 它们将包含所需的正确依赖项。

这是.NET后端二进制文件的集成问题,应尽快解决。

答案 1 :(得分:2)

扩展@ carlosfigueira的答案,似乎WepApi 5.2.0版本尚未与Azure移动服务兼容。

我是一个不幸的人,他决定让nuget去镇上并更新项目中的所有软件包,所以我就是这样做的。

从您的移动服务项目中卸载每个nuget包。然后将它们添加回来。首先只使用Microsoft Azure Mobile Services.NET后端。*软件包 - 这将拉出当前兼容的WebApi 5.1.2而不是5.2.0。和其他依赖集会。

此外,我收到了很多奇怪的重定向绑定错误,我认为工具添加错误 - 所以我在assemblyBindings中注释掉了所有dependentAssembly标签,然后在移动服务抱怨时将它们添加回来。我不得不为重定向添加回来的是Newtonsoft.Json和Microsoft.Owin。 YMMV。

我认为这也可能与VS和源代码控制插件之间存在奇怪的交互这一事实有关,因为nuget软件包有时会失败,因为它们无法获得packages.config和web.config文件的写入权限

我也在我的服务中使用PCL,这需要添加Microsoft.Bcl库 - 可能不相关,但它是导致我发现潜在错误的原因。

在工具下 - >选项 - >项目和解决方案 - >构建并运行,将MSBuild项目构建输出详细程度设置为Detailed或以上,以便深入了解流程中发生的情况。

[2014年12月24日更新]

我更新了一些我不应该做的事情,一切都再次破裂。

卸载所有nuget包。从Web.Config文件中删除所有dependentAssembly元素。保存并重新启动Visual Studio。

使用Package Manager控制台中的以下内容开始添加包。就我而言:

  • 安装包WindowsAzure.MobileServices.Backend -Version 1.0.405
  • 安装包WindowsAzure.MobileServices.Backend.Tables -Version 1.0.405
  • 安装包WindowsAzure.MobileServices.Backend.Entity -Version 1.0.405
  • 安装包WindowsAzure.MobileServices.Backend.SignalR -Version 1.0.405
  • 安装包WindowsAzure.MobileServices.Backend.Storage -Version 1.0.405

再也不要碰了......?