У меня есть сайт ASP.Net MVC, на котором запущен ServiceStack v3.9.71. У меня есть новый API ServiceStack, который настроен на доступность по адресу ~/api/*
, но вам нужно перенаправить запросы POST из старых мест ~/service/*
в новый API, но я откладываю.Redirect Legacy Post to ServiceStack API
Я пробовал использовать перенаправления URL, но при этом POST
становится GET
и данные POST теряются.
<rule name="GetVenuesByLocation" stopProcessing="true">
<match url="^service/getvenuelistbylocation/$" />
<action redirectType="Temporary" type="Redirect" url="/api/VenueListByLocation" />
</rule>
Возможно ли это, и если бы это было возможно, пожалуйста, укажите мне в правильном направлении?
Спасибо, Саймон
Вы можете просто проксировать запрос в старом URI на новый URI с помощью вызова HttpClient на стороне сервера. –
Можете ли вы использовать вкладку «Fiddler» или «Сеть» в панели инструментов разработчика вашего браузера, чтобы убедиться, что HTTP 307 происходит, когда вы посещаете «/ service/getvenuelistbylocation». Согласно (IIS 6) [this] (http://www.microsoft. com/technet/prodtechnol/WindowsServer2003/Library/IIS/2175ec7d-b2a9-4f2c-821a-b6539b88902e.mspx? mfr = true) и (IIS 7) [это] (https://technet.microsoft.com/en-us /library/cc770393%28v=ws.10%29.aspx) HTTP 307 Временные перенаправления Веб-браузер должен переиздать POST с данными. – paaschpa
@paaschpa Кажется, что по какой-то причине 301 Redirect встречается до 307, что может объяснить потерю значений post. Но почему 301? Результатом является a 301, за которым следует 307, за которым следует 404. 404 выбрасывается из-за отсутствия действия для запроса GET. – ProNotion