На что вы обращаете внимание - это код, основанный на элементе управления asp:Silverlight
веб-сервера, но этот элемент управления был снят с Silverlight 3.
Теперь мы либо напрямую используем тег объекта, либо подбираем собственные серверные элементы управления, чтобыОтобразим наше предпочтение тега объекта.
Как тег объекта, он будет выглядеть примерно так: -
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param id="xapSource" runat="server" name="source" value="ClientBin/SilverlightApplication1.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.50303.0" />
<param name="autoUpgrade" value="true" />
<param name="initParams" id="initParams" runat="server" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50303.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>
Обратите внимание на id и runat = "server" в исходном параметре.При этом загрузка страницы может выглядеть примерно так: -
protected void Page_Load(object sender, EventArgs e)
{
string xapPhysicalPath = Server.MapPath(xapSource.Attributes["value"]);
DateTime lastWrite = System.IO.File.GetLastWriteTime(xapPhysicalPath);
xapSource.Attributes["value"] = xapSource.Attributes["value"] + "?" + lastWrite.ToString("yyyyMMddThh:mm:ss");
}
Это будет гарантировать, что URL-адрес, используемый для источника, всегда будет меняться при изменении xap.Исходный код, с которым вы столкнулись, имеет недостатки: у xap все еще есть возможность измениться без изменения номера версии полностью не связанной сборки.