更新以前运行的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 ...
自定义控制器似乎不受影响。
我可能错过了一些明显的东西,但我看不到它
任何帮助将不胜感激
非常感谢
ķ。
答案 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控制台中的以下内容开始添加包。就我而言:
再也不要碰了......?