none
О политике междоменной RRS feed

  • Вопрос

  • Мой WCF service хостится на win сервисе, и не могу к нему попасть из silverlight клиента.  Можно ли какнито попроще настроить ServiceHost 4.5, чтобы мои "попытки междоменного доступа" стали наконец успешными?

Ответы

  • Есть win сервис, WCF servic(который хостится на win сервис), SL клиент.

    При попытке запроса метода WCF servicа, возникает ошибка и на нее

    "Произошла ошибка при попытке создать запрос к URI "hghgfh".
    Это могло быть вызвано попыткой междоменного доступа к службе без наличия приемлемой
    междоменной политики или с политикой, непригодной службам SOAP. Может понадобиться
    связаться с владельцем службы для публикации файла междоменной политики и убедиться
    в том, что она позволяет отправлять заголовки HTTP, связанные с SOAP. Эта ошибка также
    может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без
    использования атрибута InternalsVisibleToAttribute. Подробности см. во внутреннем исключении."

    есть решение:

    http://code.msdn.microsoft.com/Accessing-self-hosted-WCF-7872c931/sourcecode?fileId=45529&pathId=1434152176

    которое примерно выражается:

    protected override void OnStart(string[] args)
    {
     try{ host = new ServiceHost(typeof(Service), new Uri("hghgfh")); } catch{ return; }
            host.AddServiceEndpoint(typeof(IService), new BasicHttpBinding(), "basic");
            host.AddServiceEndpoint(typeof(IPolicyRetriever), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior());
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior(){ HttpGetEnabled = true };
            host.Description.Behaviors.Add(smb);
     host.Open();
    }

    Вот я и думаю может быть можно как-то проще решить вопрос доступа к WCF сервису из SL.
    Что такое, например, (ServiceMetadataBehavior)smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
    и возможно PolicyVersion.Policy15 можно куданить приспособить..

    • Помечено в качестве ответа ToylexNet 30 мая 2013 г. 22:53

Все ответы

  • "попытки междоменного доступа" - что вы подразумеваете под этим, попробуйте прояснить.
    Модератор
  • Есть win сервис, WCF servic(который хостится на win сервис), SL клиент.

    При попытке запроса метода WCF servicа, возникает ошибка и на нее

    "Произошла ошибка при попытке создать запрос к URI "hghgfh".
    Это могло быть вызвано попыткой междоменного доступа к службе без наличия приемлемой
    междоменной политики или с политикой, непригодной службам SOAP. Может понадобиться
    связаться с владельцем службы для публикации файла междоменной политики и убедиться
    в том, что она позволяет отправлять заголовки HTTP, связанные с SOAP. Эта ошибка также
    может быть вызвана использованием внутренних типов в прокси-сервере веб-службы без
    использования атрибута InternalsVisibleToAttribute. Подробности см. во внутреннем исключении."

    есть решение:

    http://code.msdn.microsoft.com/Accessing-self-hosted-WCF-7872c931/sourcecode?fileId=45529&pathId=1434152176

    которое примерно выражается:

    protected override void OnStart(string[] args)
    {
     try{ host = new ServiceHost(typeof(Service), new Uri("hghgfh")); } catch{ return; }
            host.AddServiceEndpoint(typeof(IService), new BasicHttpBinding(), "basic");
            host.AddServiceEndpoint(typeof(IPolicyRetriever), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior());
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior(){ HttpGetEnabled = true };
            host.Description.Behaviors.Add(smb);
     host.Open();
    }

    Вот я и думаю может быть можно как-то проще решить вопрос доступа к WCF сервису из SL.
    Что такое, например, (ServiceMetadataBehavior)smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
    и возможно PolicyVersion.Policy15 можно куданить приспособить..

    • Помечено в качестве ответа ToylexNet 30 мая 2013 г. 22:53
  • В этом примере показан процесс конфигурации службы из кода. Можно проделать тоже самое используя файл конфигурации приложения. Но не думаю, что это упростит что то. Конфигурация служб WCF дело не сложное, но и не простое, этот процесс можно зачислить в качестве минуса к WCF.
    Модератор
  • А как мне узнать ip host address of the remote client?
    Свойство HttpContext.Current.Request.UserHostAddress равно null на wcf сервисе, который хостится на win сервесе, в отличии от wcf сервиса, который хостится на iis.