Здравствуйте! Сегодня: Сб, 21 Сен 2019, Ваш IP: 35.172.100.232 Войти через loginza
 
Вход | Регистрация | Забыли пароль?
Мой Kbyte.Ru
> Список форумов Kbyte.Ru - - Web-программирование
+ Создать новую тему Страница: 1 · 2
Тема: Проблема работы приложения Silverlight, использующего службу WCF, по сети · +  +  дата добавления: 27.08.2014 / 15:56
Автор темы:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Имеется Silverlight-приложение, использующее для доступа к данным WCF-службу.
Все работает, развернул, запускаю на сервере - все работает, как надо.
С сервера смотрю так:
http://localhost:номер порта/имя страницы
Но, когда я запускаю с другого компьютера, не забыв заменить localhost на IP-адрес сервера, получаю такую ошибку:


Кстати, эта ошибка возникает даже на сервере, когда я localhost заменяю на IP-адрес сервера.
Технологии: .NET Framework, Silverlight, Windows Communication Foundation (WCF)
 
Ответ # 1 # · +  +  дата добавления: 27.08.2014 / 16:01
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Видимо указан жесткий, другой IP в параметрах сайта в IIS (раздел привязки).

Можно не привязывать к конкретному IP, а использовать все доступные адреса (*)

Порт тоже нужно указывать, вместо 80.
 
Ответ # 2 # · +  +  дата добавления: 27.08.2014 / 16:14
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Да, я именно по второму варианту и делал. К IP я не привязывал.
Но имя узла у меня не указано. Может быть, в этом дело?
 
Ответ # 3 # · +  +  дата добавления: 27.08.2014 / 16:32
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Можно попробовать указать localhost.
Если ничего не указывать, тоже должно работать, но могут быть конфликты.

Или можно сделать наоборот, если нет привязки к IP, добавить жесткую привязку к конкретному адресу.
Я обычно домены привязываю, localhost уже сто лет не настраивал.

Домен можно любой в файле host прописать, с указанием IP.
C:\Windows\System32\drivers\etc
На сервере и локальной машине, по идее должно работать.
 
Ответ # 4 # · +  +  дата добавления: 27.08.2014 / 17:11
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Да, я ничего не указывал - на сервере работает.
Попробовал указать имя узла localhost - ничего не изменилось.
Что интересно, у меня есть другое SL-приложение, привязки совпадают с теми, которые были, и приложение по IP открывается, в т. ч. и вне сервера. (Правда, данные не тянутся вне сервера, но это уже другой вопрос.)

Назначаю сайту жесткий IP сервера в IIS (имя узла оставил localhost) - тоже ничего не меняется, ошибка при просмотре по сети остается.

А вот когда назначаю узлу конкретное имя, на сервере возникает ошибка:
 
Ответ # 5 # · +  +  дата добавления: 28.08.2014 / 11:47
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Междоменная политика - это файл clientaccesspolicy.xml.

Нужно последовательно решать проблемы.
Сначала сделать, чтобы IIS отвечал на локальные и, затем, на удаленные запросы нормально.
Далее разбираться с приложениями Silverlight.

Если привязка к IP не помогает, может там более одного сайта с таким же IP (без хоста)? Можно отключит лишние и проверить.
 
Ответ # 6 # · +  +  дата добавления: 08.09.2014 / 16:37
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


может там более одного сайта с таким же IP (без хоста)?

Дело в том, что у меня на сервере у исходного проекта WCF-службы такой же порт, что и у развернутой службы, и при попытке перезапуска службы в IIS возникает ошибка:



Но, тем не менее, локально на сервере у меня все работает, в частности, пр нажатии "Обзор" и сайт, и служба запускаются.

Если же я назначу службе в IIS порт, отличный от порта, указанного в конфиге исходного проекта, то служба не запустится, при обращении в url развернутой службы, в браузере появляется сообщение:



Если же я для сайта укажу другой порт, отличный от указанного в исходнике, то сайт работает.

Вы это имеете в виду?
Технологии: .NET Framework, Silverlight, Windows Communication Foundation (WCF)
 
Ответ # 7 # · +  +  дата добавления: 08.09.2014 / 17:50
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


А зачем создавать конфликты? Зачем вообще запускать разработку проекта на сервере? Зачем проводить действия, которые приведут к снижению уровня безопасности, замедлению, повышения количества глюков и неминуемой смерти сервера?

Можно использовать любой порт, любой IP-адрес, любое доменное имя.
При желании, адрес службы (у клиентского приложения) можно сделать динамичным.
И что мешает изменять конфиг?
 
Ответ # 8 # · +  +  дата добавления: 11.09.2014 / 14:25
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Конфликты - потому что без этого сайт вообще не работает, при развертывании возникает ошибка

а при обращении к службе, в браузере возникает вот такая ошибка:

Технологии: .NET Framework, Silverlight, Windows Communication Foundation (WCF)
 
Ответ # 9 # · +  +  дата добавления: 11.09.2014 / 15:23
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


При смене порта сайта в IIS ошибка TargetInvokationExcception остается, а при смена порта службы в IIS - при обращении к службе в браузере возникает сообщение "веб-страница недоступна".
Технологии: .NET Framework, Silverlight, Windows Communication Foundation (WCF)
 
Ответ # 10 # · +  +  дата добавления: 11.09.2014 / 16:14
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Нужно решать нижние проблемы, а не создавать новые :)

Ошибка, скорее всего, из-за неправильной конфигурации сайта.

Либо сервера. Может на нем нет указанного Framework. Указанный путь существует?

Или проект компилирован под 32 бита, а пул настроен на 64 или наборот.

Отладку служб нужно проводить через прокси, типа Fiddler.
 
Ответ # 11 # · +  +  дата добавления: 11.09.2014 / 16:41
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Дополню, под словом "сайт" емеется ввиду сайт на сервере в IIS.
 
Ответ # 12 # · +  +  дата добавления: 12.09.2014 / 00:44
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Нужно решать нижние проблемы, а не создавать новые :)

Это действие я сделал по вашему совету:
А зачем создавать конфликты? Зачем вообще запускать разработку проекта на сервере?

Дело в том, что сайт (опубликованный в IIS) работает корректно (только локально) когда я открою файл службы .svc в студии в браузере. Но, тем самым, видимо, и возникал конфликт, о котором вы писали ранее:
может там более одного сайта с таким же IP (без хоста)?
Когда я перестал запускать службу из студии, и вообще вести разработку на сервере, конфликт исчез.

Сайт стал открываться по сети корректно, но при обращении к WCF-службе стало появляться окно с ошибкой (как локально, так и по сети), а при обращении к опубликованной службе - ошибка в браузере (см предыдущий пост).
Указанный путь существует?
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll?
Да, существует.
Или проект компилирован под 32 бита, а пул настроен на 64 или наоборот.
Проект компилирован под 64 бита. А как проверить, на сколько бит настроен пул?
 
Ответ # 13 # · +  +  дата добавления: 12.09.2014 / 11:29
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


Битность указывается в дополнительных параметрах пула. По идее, в 64-битной системе по умолчанию должно стоять 64 бита.

ASP .NET вообще зарегистрирован в системе, работает?
Можно создать прстенькую страницу aspx и посмотреть, откроет ее IIS или нет.

+содержимое web.config покажи.
 
Ответ # 14 # · +  +  дата добавления: 12.09.2014 / 11:39
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


И конфиг сайта, на котором размещено приложение Silverlight.
 
Ответ # 15 # · +  +  дата добавления: 12.09.2014 / 17:51
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Здесь про битность? Ничего другого в свойствах больше нет.



Обычную ASP .NET страницу - пробовал - открывает, нормально. И с БД тоже, если настроить пользователя по имени сервера.

и даже страница моего сайта открывается, только возникает ошибка при обращении к WCF службе:



 
Ответ # 16 # · +  +  дата добавления: 12.09.2014 / 17:52
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Конфиг службы:

<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="aspl_testConnectionString" connectionString="Data Source=BDBSRV01;Initial Catalog=aspl_test;Integrated Security=True" providerName="System.Data.SqlClient"/>
<add name="CMA_002ConnectionString" connectionString="Data Source=BDBSRV01;Initial Catalog=CMA_002;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
</appSettings>
<system.web>
<compilation targetFramework="4.5" debug="true"/>
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!--Чтобы избежать раскрытия метаданных, до развертывания задайте следующим параметрам значение "false". -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- Чтобы при сбое получать подробные сведения об исключении для целей отладки, установите для нижеприведенного параметра значение true. Перед развертыванием установите значение false, чтобы избежать раскрытия информации об исключении -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
Для просмотра корневого каталога веб-приложения во время отладки установите значение true.
Перед развертыванием установите значение false, чтобы избежать раскрытия сведений в папке веб-приложения.
-->
<defaultDocument>
<files>
<add value="Service.svc"/>
</files>
</defaultDocument>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
 
Ответ # 17 # · +  +  дата добавления: 12.09.2014 / 17:54
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Конфиг сайта:

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
    <connectionStrings>
        <add name="aspl_testConnectionString" connectionString="Data Source=BDBSRV01;Initial Catalog=aspl_test;Integrated Security=True"
            providerName="System.Data.SqlClient" />
        <add name="CMA_002ConnectionString" connectionString="Data Source=BDBSRV01;Initial Catalog=CMA_002;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.web>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
    </system.web>

    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="">
                    <!--<dataContractSerializer maxItemsInObjectGraph="2000000" />-->
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <bindings>
            <customBinding>
                <binding name="CityMarketSilverlighSolution.Web.Service.customBinding0">
                    <binaryMessageEncoding />
                    <httpTransport />
                </binding>
            </customBinding>
        </bindings>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
            multipleSiteBindingsEnabled="true" />
        <services>
            <service name="CityMarketSilverlighSolution.Web.Service">
                <endpoint address="" binding="customBinding" bindingConfiguration="CityMarketSilverlighSolution.Web.Service.customBinding0"
                    contract="CityMarketSilverlighSolution.Web.Service" />
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

 
Ответ # 18 # · +  +  дата добавления: 12.09.2014 / 18:10
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


На скрине версия 4.0, в конфиге 4.5. По идее для 4.5 должна быть 4.5

Вторая возможная причина - протокол httpS.

И если служба открывается в браузере, а приложение не может получить доступ к службе, то проблема в приложении (например, неправильный адрес).
 
Ответ # 19 # · +  +  дата добавления: 12.09.2014 / 18:13
Автор ответа:
Алексей Немиро
Алексей Немиро
тем: 534 / ответов: 5130 / благодарностей: 325 / репутация: 211
Чашка Kbyte.Ru>>
Url: aleksey.nemiro.ru
Icq: 261779681
Skype: alekseynemiro
ответов: 5130
создал(а) тем: 534


По идее в конфиге сайта должен быть адрес службы - endpoint, в представленном коде он пустой.
 
Ответ # 20 # · +  +  дата добавления: 13.09.2014 / 16:03
Автор ответа:
Michael
Michael
тем: 10 / ответов: 44 / благодарностей: 0 / репутация: 0
ответов: 44
создал(а) тем: 10


Endpoint - так вот он же - 42-я - 44-я строки.
 
Страница: 1 · 2 + Создать новую тему