升级到2012年6月SDK后的例外情况

时间:2012-06-23 16:27:29

标签: exception azure trace

我有一个项目启动并运行2011年11月的SDK,最近升级到2012年6月的SDK。当我第一次看到错误时,我尝试了显而易见的 - 删除引用并添加更高版本,但这没有帮助。不知怎的,似乎仍在请求版本1.0.0.0。我也试图删除引用并添加旧版本,但没有运气。

以下是我在代码中的显示方式。现在命中的第一个Trace.WriteLine报告以下异常:

  

System.IO.FileLoadException未被用户代码Message = Can处理   不加载文件或程序集'Microsoft.WindowsAzure.Diagnostics,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或   其中一个依赖项。定位程序集的清单定义   与装配参考不匹配。 (HRESULT的例外情况:   0x80131040)来源= mscorlib
  FileName = Microsoft.WindowsAzure.Diagnostics,Version = 1.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35 FusionLog ====   预绑定状态信息===日志:用户= NT AUTHORITY \ NETWORK   SERVICE LOG:DisplayName = Microsoft.WindowsAzure.Diagnostics,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35   (完全指定)LOG:Appbase =   file:/// F:/ SVNProjects / myproject / SitePagesWebRole / LOG:Initial   PrivatePath = F:\ SVNProjects \ myproject \ SitePagesWebRole \ bin调用   汇编:(未知)。   ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:   F:\ SVNProjects \ myproject \ SitePagesWebRole \ web.config日志:使用主机   配置文件:   C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet.config日志:   使用来自的机器配置文件   C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中。   日志:政策后参考:Microsoft.WindowsAzure.Diagnostics,   Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35 LOG:   试图下载新的URL   文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary   ASP.NET   文件/根/ b117acb8 / f2404402 / Microsoft.WindowsAzure.Diagnostics.DLL。   日志:尝试下载新网址   文件:/// C:/Windows/Microsoft.NET/Framework64/v4.0.30319/Temporary   ASP.NET   文件/根/ b117acb8 / f2404402 / Microsoft.WindowsAzure.Diagnostics / Microsoft.WindowsAzure.Diagnostics.DLL。   日志:尝试下载新网址   文件:/// F:/SVNProjects/myproject/SitePagesWebRole/bin/Microsoft.WindowsAzure.Diagnostics.DLL。   警告:比较程序集名称导致不匹配:次要   版本错误:无法完成装配设置(hr = 0x80131040)。   探测终止。

     

堆栈跟踪:          at System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,   StackCrawlMarkHandle stackMark,Boolean loadTypeFromPartialName,   ObjectHandleOnStack类型)          at System.RuntimeTypeHandle.GetTypeByName(String name,Boolean throwOnError,Boolean ignoreCase,Boolean reflectionOnly,   StackCrawlMark&安培; stackMark,Boolean loadTypeFromPartialName)          在System.Type.GetType(String typeName)          at System.Diagnostics.TraceUtils.GetRuntimeObject(String className,Type baseType,String initializeData)          在System.Diagnostics.TypedElement.BaseGetRuntimeObject()          在System.Diagnostics.ListenerElement.GetRuntimeObject()          在System.Diagnostics.ListenerElementsCollection.GetRuntimeObject()          在System.Diagnostics.TraceInternal.get_Listeners()          在System.Diagnostics.TraceInternal.WriteLine(String message)          at myproject.GameAPI.Login(Int64 fbid,Int64 [] friends)在F:\ SVNProjects \ myproject \ GameLogic \ GameAPI.cs:第119行
  的InnerException:

如何解决这个问题?

3 个答案:

答案 0 :(得分:14)

检查web.config / app.config以获取所有角色。确保将对Microsoft.WindowsAzure.Diagnostics程序集的任何引用的版本号更改为版本 1.7.0.0

答案 1 :(得分:2)

您的web / worker角色项目中的所有azure程序集引用都应指向1.7.0.0版本。您的ccproj文件应包含

<ProductVersion>1.7</ProductVersion>

确保Azure实例包含正确的基本程序集。

您还可以检查Microsoft.WindowsAzure.Diagnostics是否已复制到输出/天蓝色包中。

答案 2 :(得分:1)

上面的内容对我来说不起作用(我看到的所有内容都说1.7),而是我浏览了每个项目,删除并重新添加了以下开头的任何引用:

Microsoft.WindowsAzure.*

重新添加时,请确保版本为1.7。