Используя IIS ARR и URL Переписывают для отправки Запросов к веб-сервису в новый сервер

Мы пробуем, перемещают наши веб-сервисы от облачных сервисов Azure до веб-приложений Azure, и это изменило бы их адрес, но у нас есть некоторые клиенты, что мы не можем обновить адрес, который они используют, таким образом, мы ищем способ использовать текущий сервер облачных сервисов в качестве сообщения, передавая сервер для тех клиентов.

Я не администратор IIS, таким образом, я пытался сделать некоторый поиск и узнать, как сделать это с ARR, и URL Переписывают, но это, кажется, не работает, таким образом, я думаю, является ли это правильным подходом для начала!

Я включил Прокси в ARR и создал переписать правило в IIS для моего приложения. Вот результат, переписывают правило в web.config старого адреса:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <outboundRules>
                <preConditions>
                    <preCondition name="ResponseIsHtml1">
                        <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
                    </preCondition>
                </preConditions>
            </outboundRules>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://new-address.azurewebsites.net/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Действительно ли это - надлежащий способ достигнуть этого? Или я должен изучить решение проблемы иначе?

Заранее спасибо.

0
задан 28 August 2015 в 11:06
1 ответ

Устранена проблема с использованием RoutingService вместо перезаписи AAR и URL! Просто нужно было добавить файл web.config в пустую папку и готово!

<?xml version="1.0"?>
<configuration>
<system.serviceModel>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
    <serviceActivations>
      <add factory="System.ServiceModel.Activation.ServiceHostFactory" relativeAddress="./MyService.svc" 
            service="System.ServiceModel.Routing.RoutingService,System.ServiceModel.Routing, version=4.0.0.0, Culture=neutral,PublicKeyToken=31bf3856ad364e35" />
    </serviceActivations>
  </serviceHostingEnvironment>
  <services>
    <service name="System.ServiceModel.Routing.RoutingService" behaviorConfiguration="DefaultServiceBehavior">
      <endpoint name="basicHttpSampleService" address="" binding="wsHttpBinding" bindingConfiguration="sslBinding" contract="System.ServiceModel.Routing.IRequestReplyRouter" />
      <endpoint address="mex" binding="mexHttpsBinding"  contract="IMetadataExchange" />
    </service>
  </services>
  <behaviors>
  <serviceBehaviors>
    <behavior name="DefaultServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
      <routing filterTableName="routingFilterTable" routeOnHeadersOnly="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<routing>
  <filters>
    <filter name="AddressFilter" filterType="MatchAll"/>
  </filters>
  <filterTables>
    <filterTable name="routingFilterTable">
      <add filterName="AddressFilter" endpointName="basicHttpSampleServiceClient"/>
    </filterTable>
  </filterTables>
</routing>
<bindings>
  <wsHttpBinding>
        <binding name="sslBinding" receiveTimeout="00:05:00" sendTimeout="00:05:00" maxReceivedMessageSize="2147483647">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
          <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
        </binding>
      </wsHttpBinding>
</bindings>
<client>
  <endpoint address="http://new-address.azurewebsites.net/MyService.svc"
    binding="wsHttpBinding" bindingConfiguration="sslBinding"
    contract="*" name="basicHttpSampleServiceClient" />
</client>
</system.serviceModel>
</configuration>
0
ответ дан 5 December 2019 в 12:10

Теги

Похожие вопросы