Вы просмотрели запись в Википедии для магического номера ?
В деталях рассказывается обо всех способах создания ссылки на магические числа. Вот цитата из магического числа как плохая практика программирования
Термин «магическое число» также относится к плохой практике программирования использования чисел непосредственно в исходном коде без объяснения причин. В большинстве случаев это затрудняет чтение, понимание и поддержку программ. Хотя большинство руководств делают исключение для чисел с нулем и единицей, полезно определить все остальные числа в коде как именованные константы.
blockquote>
У меня была эта та же проблема пару раз. В прошлом я решил это при помощи веб-приложения как запуск, но похоже, что Вы уже сделали это.
Мое сообщение на предмете: http://www.donnfelker.com/silverlight-cross-domain-issue/
, Возможно, Ваш ServiceReferences.ClientConfig
для Вашего клиента Silverlight указывает на неправильный URL?
кроме того, проверьте местоположение своего междоменного файла политики. Эта статья MSDN имеет больше информации.
Дополнительное примечание для выполнения Silverlight локально (Боковая панель Vista, например). Как сообщается в эта запись в блоге , "Silverlight не может использовать поставщика сетевых услуг при выполнении локально". обходное решение должно использовать JavaScript для взаимодействия через интерфейс к веб-сервису в этой ситуации.
Вы попробовали скрипач при использовании этого через IE, Вы смогли видеть трафик, который Silverlight вызывает, такой как, которые пересекают файлы политики, которые это ищет?
Я столкнулся с чем-то вроде этого и добавлением, что ServiceHostFactory устранил мою проблему. Один только междоменный файл политики не зафиксировал его.
class MyHostFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
MyHost customServiceHost =
new MyHost(serviceType, new Uri("[Your URL goes here]",UriKind.Absolute));
return customServiceHost;
}
}
class MyHost : ServiceHost
{
public MyHost(Type serviceType, params Uri[] baseAddresses) base(serviceType, baseAddresses)
{ }
protected override void ApplyConfiguration()
{
base.ApplyConfiguration();
}
}
также необходимо добавить Фабрику = "MyHostFactory" в теге, который определяет сервис
Проблема может заключаться в том, что ваш сервер разработки не может обслуживать XML-файл, попробуйте сделать это — явно сделайте его доступным через WebGet
[ServiceContract]
public interface ICrossDomainService
{
[OperationContract]
[WebGet(UriTemplate = "ClientAccessPolicy.xml")]
Message ProvidePolicyFile();
}
, и тогда ProvidePolicyFile() может быть
public System.ServiceModel.Channels.Message ProvidePolicyFile()
{
FileStream filestream = File.Open(@"ClientAcessPolicy.xml", FileMode.Open);
// Either specify ClientAcessPolicy.xml file path properly
// or put that in \Bin folder of the console application
XmlReader reader = XmlReader.Create(filestream);
System.ServiceModel.Channels.Message result = Message.CreateMessage(MessageVersion.None, "", reader);
return result;
}