Asp.net 将旧式Post重定向到ServiceStack API
我有一个运行ServiceStack v3.9.71的ASP.Net MVC站点。我有一个新的ServiceStack API,它被配置为在Asp.net 将旧式Post重定向到ServiceStack API,asp.net,asp.net-mvc,
servicestack,Asp.net,Asp.net Mvc,
servicestack,我有一个运行ServiceStack v3.9.71的ASP.Net MVC站点。我有一个新的ServiceStack API,它被配置为在~/API/*上可用,但需要将来自旧位置的POST请求重定向到新的API,但我即将取消锁定 我尝试过使用url重定向,但在这样做时,POST变成了GET,POST数据丢失 <rule name="GetVenuesByLocation" stopProcessing="true"> <match url="^service/getv
~/API/*
上可用,但需要将来自旧位置的POST请求重定向到新的API,但我即将取消锁定
我尝试过使用url重定向,但在这样做时,POST
变成了GET
,POST数据丢失
<rule name="GetVenuesByLocation" stopProcessing="true">
<match url="^service/getvenuelistbylocation/$" />
<action redirectType="Temporary" type="Redirect" url="/api/VenueListByLocation" />
</rule>
这可以实现吗?如果可以,请有人给我指出正确的方向吗
谢谢,Simon在评论中回答和讨论。添加答案,使其他人更容易找到解决方案。 临时重写规则(在问题中)是正确的,将执行307 POST以维护原始值 问题是已有的重定向重写规则在执行临时重写规则之前正在创建301。301将丢失数据
每一个ProNotion-结果表明该规则是正确的,但需要添加到强制使用尾部斜杠的规则之前。然后它可以使用或不使用尾部斜杠 您可以通过服务器端HttpClient调用简单地将旧URI处的请求代理到新URI。您可以使用Fiddler或浏览器开发人员工具栏中的网络选项卡,确保在访问
/service/getvenuelistbylocation.
时根据(IIS 6)和(IIS 7)执行HTTP 307吗HTTP 307临时重定向Web浏览器应使用数据重新发出POST。@paaschpa似乎出于某种原因,307之前发生了301重定向,这可能解释了POST值丢失的原因。但为什么会是301呢?结果是一个301接一个307接一个404。抛出404是因为GET请求没有任何操作。您使用什么工具(浏览器、Fiddler等)查看301>307>404。询问,因为浏览器将缓存301重定向…请看,这可能是您的测试中的一个潜在问题。当我尝试发布到旧url时,我在Fiddler中看到了它。