Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 将旧式Post重定向到ServiceStack API_Asp.net_Asp.net Mvc_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,Asp.net,Asp.net Mvc,servicestack" /> servicestack,Asp.net,Asp.net Mvc,servicestack" />

Asp.net 将旧式Post重定向到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

我有一个运行ServiceStack v3.9.71的ASP.Net MVC站点。我有一个新的ServiceStack API,它被配置为在
~/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中看到了它。