Мы пробуем, перемещают наши веб-сервисы от облачных сервисов 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>
Действительно ли это - надлежащий способ достигнуть этого? Или я должен изучить решение проблемы иначе?
Заранее спасибо.
Устранена проблема с использованием 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>