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-95565ea44b28
An exception of type 'System.IO.FileLoadException' occurred and was caught.
---------------------------------------------------------------------------
11/20/2011 21:50:45
Type : System.IO.FileLoadException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : 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 : SitefinityWebApp
Help link :
FileName : Telerik.Sitefinity.Model, Version=4.3.1873.0, Culture=neutral, PublicKeyToken=b28c218413bdf563
FusionLog : 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.ListDictionaryInternal
TargetSite : 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 : StopTechWeb1
TimeStamp : 11/20/2011 9:50:45 PM
FullName : Telerik.Sitefinity.Utilities, Version=4.3.1885.0, Culture=neutral, PublicKeyToken=b28c218413bdf563
AppDomainName : /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