4.3.1885 error with external widget templates
Hello, I've implemented an external widget template for our blog. This was working great in 4.3.1873, but when we upgraded to 4.3.1885, the control stopped rendering. It seems that it is still requesting the 4.3.1873 version of the "telerik.Sitefinity.Model" DLL.
I've tried rebuilding, resetting IIS, clearing ASP.NET Temporary files, changing from CodeBehind to CodeFile and vice-versa, and anything else I could think of, but the error won't go away. The control partially renders before displaying "Error parsing the template"
Here is the actual log:
Message: HandlingInstanceID: 02e95cbf-c105-4185-a0ae-95565ea44b28An exception of type 'System.IO.FileLoadException' occurred and was caught.---------------------------------------------------------------------------11/20/2011 21:50:45Type : System.IO.FileLoadException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Message : Could not load file or assembly 'Telerik.Sitefinity.Model, Version=4.3.1873.0, Culture=neutral, PublicKeyToken=b28c218413bdf563' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)Source : SitefinityWebAppHelp link : FileName : Telerik.Sitefinity.Model, Version=4.3.1873.0, Culture=neutral, PublicKeyToken=b28c218413bdf563FusionLog : WRN: Assembly binding logging is turned OFF.To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.Note: There is some performance penalty associated with assembly bind failure logging.To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].Data : System.Collections.ListDictionaryInternalTargetSite : Void rlvBlogPosts_ItemDataBound(System.Object, Telerik.Web.UI.RadListViewItemEventArgs)Stack Trace : at SitefinityWebApp.StopTechControls.Templates.Blog.BlogList.rlvBlogPosts_ItemDataBound(Object sender, RadListViewItemEventArgs e) at System.EventHandler`1.Invoke(Object sender, TEventArgs e) at Telerik.Web.UI.RadListView.BuildDataItem(Int32 itemsCreatedCount, Control itemContainer, Boolean dataBinding, Object dataItem, Int32& controlIndex) at Telerik.Web.UI.RadListView.CreateDataItems(Control container, IEnumerable dataSource, Boolean dataBinding) at Telerik.Web.UI.RadListView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) at Telerik.Web.UI.RadListView.PerformDataBinding(IEnumerable data) at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) at Telerik.Web.UI.RadListView.PerformSelect() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Control.AddedControl(Control control, Int32 index) at Telerik.Sitefinity.Web.UI.ContentUI.Views.Backend.ViewBase.CreateChildControls()Additional Info:MachineName : StopTechWeb1TimeStamp : 11/20/2011 9:50:45 PMFullName : Telerik.Sitefinity.Utilities, Version=4.3.1885.0, Culture=neutral, PublicKeyToken=b28c218413bdf563AppDomainName : /LM/W3SVC/2/ROOT-2-129662993862118000<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="BlogList.ascx.cs" Inherits="SitefinityWebApp.StopTechControls.Templates.Blog.BlogList" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.ContentUI" Assembly="Telerik.Sitefinity" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI" Assembly="Telerik.Sitefinity" %><%@ Register TagPrefix="sf" Namespace="Telerik.Sitefinity.Web.UI.PublicControls.BrowseAndEdit" Assembly="Telerik.Sitefinity" %><div id="bloghomepost"> <telerik:RadListView ID="Repeater" ItemPlaceholderID="ItemsContainer" runat="server" EnableEmbeddedSkins="false" EnableEmbeddedBaseStylesheet="false" OnItemDataBound="rlvBlogPosts_ItemDataBound"> <LayoutTemplate> <sf:ContentBrowseAndEditToolbar ID="MainBrowseAndEditToolbar" runat="server" Mode="Add"> </sf:ContentBrowseAndEditToolbar> <asp:PlaceHolder ID="ItemsContainer" runat="server" /> </LayoutTemplate> <ItemTemplate> <div runat="server" id="dvPost"> <div id="leftdate"> <div class="datebox"> <p class="day"> <asp:Literal runat="server" ID="lblDay"></asp:Literal></p> <p class="month"> <asp:Literal runat="server" ID="lblMonth"></asp:Literal></p> </div> </div> <div class="centerblogpost"> <h2> <sf:DetailsViewHyperLink ID="DetailsViewHyperLink1" TextDataField="Title" ToolTipDataField="Description" runat="server" /></h2> <asp:Image runat="server" ID="imgPost" Width="170px" /> </div> <div class="rightblogpost"> <p class="postinfo"> posted by: <asp:Literal runat="server" ID="lblAuthor"></asp:Literal> <%--<asp:Literal runat="server" ID="lblCommentCount"></asp:Literal>--%> <%--<img src="images/bloglink.png" alt="blog link" /> <a href="#" target="_self">Share this</a>--%></p> <p class="postdesc"> <asp:Literal runat="server" ID="lblSummary"></asp:Literal></p> <p class="postinfo"> <sf:DetailsViewHyperLink ID="DetailsViewHyperLink2" Text="Read More" ToolTipDataField="Description" runat="server" /> </p> </div> <div class="clear"> </div> </div> </ItemTemplate> </telerik:RadListView> <sf:Pager ID="pager" runat="server" ShowPrevAndNext="True" CssClass="pager" > </sf:Pager></div>protected void rlvBlogPosts_ItemDataBound(object sender, RadListViewItemEventArgs e) var dataItem = ((RadListViewDataItem)e.Item).DataItem; var post = (BlogPost)dataItem; var day = e.Item.FindControl("lblDay") as Literal; var month = e.Item.FindControl("lblMonth") as Literal; //var title = e.Item.FindControl("lblTitle") as Literal; var desc = e.Item.FindControl("lblSummary") as Literal; var author = e.Item.FindControl("lblAuthor") as Literal; //var comments = e.Item.FindControl("lblCommentCount") as Literal; var image = e.Item.FindControl("imgPost") as Image; var link1 = e.Item.FindControl("lnkTitle") as HyperLink; var link2 = e.Item.FindControl("lnkReadMore") as HyperLink; var div = e.Item.FindControl("dvPost") as HtmlGenericControl; day.Text = post.PublicationDate.Day.ToString(); month.Text = post.PublicationDate.ToString("MMM"); //title.Text = post.Title; var content = HtmlRemoval.StripTagsCharArray(post.Content); desc.Text = content.Length > 400 ? content.Substring(0, 330) + "..." : content; author.Text = GlobalMembers.GetUserFullName(post.Owner); //var count = post.Comments.Count; //comments.Text = count.ToString() + " " + (count == 1 ? "comment" : "comments"); var imageUrl = GlobalMembers.FetchLinksFromSource(post.Content).FirstOrDefault(); if (imageUrl != null) image.ImageUrl = imageUrl.ToString(); var target = GlobalMembers.GetTargetBlogPage(); if (link1 != null && target != null) link1.NavigateUrl = DataResolver.Resolve(post, "URL", null, target.Id.ToString()); if (link2 != null && target != null) link2.NavigateUrl = DataResolver.Resolve(post, "URL", null, target.Id.ToString()); if (e.Item.ItemType == RadListViewItemType.AlternatingItem) div.Attributes.Add("class", "greypost"); else div.Attributes.Add("class", "whitepost"); Well the thing is, if this exists in your web app then it shouldn't be the template having version conflict errors. I don't see anywhere where there's a version # specified.
DO you have an external assembly in there or a marketplace component which would be referencing the old assembly versions?
Steve... Thanks for the reply... I do have additional projects in the solution that use that assembly. However, the reference is set to the main web application /bin directory, and in the properties window, it shows the correct version number. However, based on your theory, I went ahead and removed the existing references and pointed them back to the same ones, and voila...all is great again.
Not sure why the new DLLs didn't update, as this has never been a problem in previous upgrades.
Anyway, thanks for the suggestion.... It led me to the true problem. Thanks.
Hey Amir :)
Yeah it's a pretty common problem (version conflicts)...99% of the time it's just an old reference, and the last 1% are the problems that make you want to throw your monitor out the window :)
When I have external components I always turn on Assembly Binding...adds a couple seconds to an upgrade, but saves a TON of headaches :)
Steve