Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WCF, Web Services, Remoting Новый топик    Ответить
 Помогите развернуть WCF-сервис на IIS вручную  [new]
AlexV1
Member

Откуда: Новосибирск
Сообщений: 605
Добрый день!

Помогите развернуть WCF-сервис, написанный на C#.NET в Visual Studio 2017 на сервере IIS.
Права админские есть. IIS находится на соседнем ПК в моей же квартире.

Хочу научиться копировать файлы WCF сервиса в папку IIS вручную (без функции Publish в Visual Studio), чтобы из браузера можно было запросить WSDL.
Ранее никогда этого не делал, IIS не настраивал.

В Default Web Site нужно создавать подпапку (виртуальный каталог) или рядом с Default Web Site создать свой сайт? Хотя у меня же не сайт, а WCF-сервис.
19 апр 18, 15:10    [21352232]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развернуть WCF-сервис на IIS вручную  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3149
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/deploying-an-internet-information-services-hosted-wcf-service
24 апр 18, 11:02    [21363459]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развернуть WCF-сервис на IIS вручную  [new]
AlexV1
Member

Откуда: Новосибирск
Сообщений: 605
Добрый день,

Пока через Publish в VS 2017 опубликовал в IIS на ПК с именем msi и OS Windows 7
Ссылка поучилась вот такая (через браузер успешно открывается локально с этого же ПК msi)
http://msi/FileTransferService/WcfServiceLibrary1.FileTransferService.svc

Но есть одно НО...

Накидал отдельное Windows Forms App, добавил в него Service Reference и вызвал метод сервиса.
Выдало
Прослушивание на http://msi/FileTransferService/WcfServiceLibrary1.FileTransferService.svc не выполняла ни одна конечная точка, которая могла бы принять сообщение. Среди прочих причин это могло быть вызвано неправильным адресом или действием SOAP.

Но если я ничего не меняю и по F5 запускаю из студии, запущенной с правами администратора, то все OK, вызов метода идет успешно. В вот после переноса в IIS ругается на endpoint

В чем может быть причина?
Может ли WCF-траффик между браузером и IIS локироваться?
А может для IIS нужно еще какую endpoint создать или же поднастроить чего в app.config'е клиента?

Конфиг WcfServiceLibrary1

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
  </appSettings>
  
  <system.web>    
    <compilation debug="true" />    
  </system.web>
  
  <system.serviceModel>
      
    <bindings>
      <basicHttpBinding>

        <binding name="myHttpBinding">
		<security mode="None">
		</security>
	</binding>

        <binding name="httpLargeMessageStream" maxReceivedMessageSize="2147483647" transferMode="Streamed" messageEncoding="Mtom">
             <!--
               <security mode="Transport">
						   <transport clientCredentialType="None" proxyCredentialType="None" />
					   </security>
             -->
        </binding>
          
      </basicHttpBinding>
    </bindings>

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" >

       <baseAddressPrefixFilters>
          <add prefix="http://msi"/>          
       </baseAddressPrefixFilters>
      
    </serviceHostingEnvironment>
      
    <services>
      <service behaviorConfiguration="serviceBehavior" name="WcfServiceLibrary1.FileTransferService">

        <endpoint address="" name="basicHttpStream" binding="basicHttpBinding" bindingConfiguration="httpLargeMessageStream" contract="WcfServiceLibrary1.IFileTransferService"/>        
       
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

         <host>
           <baseAddresses>
              <add baseAddress="http://msi/FileTransferService/"/>
           </baseAddresses>
         </host>
    
      </service>
    </services>
    
    <behaviors>
      <serviceBehaviors>

        <behavior name="serviceBehavior">          
            <serviceMetadata httpGetEnabled="true" httpsGetEnabled="True"/>
            <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/>
            <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
        
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/></startup></configuration>
27 апр 18, 19:12    [21375151]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развернуть WCF-сервис на IIS вручную  [new]
AlexV1
Member

Откуда: Новосибирск
Сообщений: 605
В InnerException.Message при этом на клиента приходит
Удаленный сервер возвратил ошибку: (404) Не найден.
28 апр 18, 03:04    [21375848]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развернуть WCF-сервис на IIS вручную  [new]
AlexV1
Member

Откуда: Новосибирск
Сообщений: 605
Что-то мне подсказывает, что я напутал с
baseAddresses
, но не пойму что
28 апр 18, 03:58    [21375855]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развернуть WCF-сервис на IIS вручную  [new]
AlexV1
Member

Откуда: Новосибирск
Сообщений: 605
Важная деталь, которую сегодня обнаружил.

Метод string GetData, сгенерированный студией, после публикации WCF в IIS работает на ура!
А вот мой метод UploadFile, который направляет потоковые данные (Stream) на сервер отваливается с ошибкой
Прослушивание на http://msi/FileTransferService/WcfServiceLibrary1.FileTransferService.svc не выполняла ни одна конечная точка, которая могла бы принять сообщение. Среди прочих причин это могло быть вызвано неправильным адресом или действием SOAP.
В InnerException.Message при этом на клиента приходит
Удаленный сервер возвратил ошибку: (404) Не найден.

Подозреваю, что метод string GetData(int) и метод FileUploadReturnMessage UploadFile(FileUploadMessage request) или обрабатываются в IIS разными точками и проблема в точке обработки потоковых данных или в IIS где то нужно разрешить Stream данные.

Есть идеи?
28 апр 18, 05:55    [21375871]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развернуть WCF-сервис на IIS вручную  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3149
AlexV1
Важная деталь, которую сегодня обнаружил.

Метод string GetData, сгенерированный студией, после публикации WCF в IIS работает на ура!
А вот мой метод UploadFile, который направляет потоковые данные (Stream) на сервер отваливается с ошибкой
Прослушивание на http://msi/FileTransferService/WcfServiceLibrary1.FileTransferService.svc не выполняла ни одна конечная точка, которая могла бы принять сообщение. Среди прочих причин это могло быть вызвано неправильным адресом или действием SOAP.
В InnerException.Message при этом на клиента приходит
Удаленный сервер возвратил ошибку: (404) Не найден.

Подозреваю, что метод string GetData(int) и метод FileUploadReturnMessage UploadFile(FileUploadMessage request) или обрабатываются в IIS разными точками и проблема в точке обработки потоковых данных или в IIS где то нужно разрешить Stream данные.

Есть идеи?


Для начала решите эту фигню
Удаленный сервер возвратил ошибку: (404) Не найден.

а потом уже будете фантазировать далее.
29 апр 18, 11:22    [21378549]     Ответить | Цитировать Сообщить модератору
 Re: Помогите развернуть WCF-сервис на IIS вручную  [new]
AlexV1
Member

Откуда: Новосибирск
Сообщений: 605
Спасибо всем за помощь.

Одной из проблем было то, что не хватало прав на мою папку в IIS для IIS_IUSERS
Дал права и заработало.
6 май 18, 16:58    [21391007]     Ответить | Цитировать Сообщить модератору
Все форумы / WCF, Web Services, Remoting Ответить