У меня проблемы с хостингом междоменных приложений с Silverlight.
У меня есть приложение, размещенное в другом домене и содержащее следующий HTML-код на странице:
<script type="text/javascript">
function succ( sender, args ) {
console.log("SUCCESS");
console.log(sender);
console.log(args);
}
function err( sender, args ) {
console.log("FAILURE");
console.log(sender);
console.log(args);
}
</script>
<object width="400" height="20" id="app" type="application/x-silverlight-2" data="data:application/x-silverlight-2,">
<param name="minruntimeversion" value="4.0.41108.0"/>
<param name="autoupgrade" value="false"/>
<param name="onerror" value="err"/>
<param name="onload" value="succ"/>
<param name="enablehtmlaccess" value="true"/>
<param name="source" value="http://example.com/app.xap"/>
</object>
Но если приложение app.xap
размещено в домене, отличном от этого HTML-кода, функция onLoad succ
вызывается без аргументов, поэтому она регистрирует следующие строки:
SUCCESS
undefined
undefined
Если я размещаюсь в том же домене, он записывает правильные строки:
SUCCESS
UserControl {}
undefined
Так что в первом случае я не смог добраться до аннотированных методов [ScriptableMember]
из javascript, потому что у меня нет ссылокв приложение.
В файле AppManifest.xml
я включил атрибут, необходимый для метода HtmlPage.RegisterScriptableObject
, как этот:
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
ExternalCallersFromCrossDomain="ScriptableOnly"
>
<Deployment.Parts>
</Deployment.Parts>
</Deployment>
Файл xap
передается с application/x-silverlight-app
Content-Type
, так что это тоже не проблема.
Что мне не хватает?
Спасибо!