我尝试使用 URL 中的一些参数发布到 localhost。Fiddler 中一切正常。但 cURL 不允许我这样做,并显示以下错误消息。
curl --data“任务=烘焙”http://本地主机:49301/api/donut/run
{“Message”:“未找到与请求 URI 匹配的 HTTP 资源'http://本地主机:49301/api/donut/run'。","MessageDetail":"在控制器‘Donut’上未找到与请求匹配的操作。"}
在 Fiddler 中我编写请求如下:POSThttp://localhost:49301/api/donut/run?Task=bake
答案1
虽然从技术上讲您可能正在 Fiddler 中执行“POST”请求(我没有使用过,但我确实对 HTTP 有所了解),但在我看来,您实际上并没有发布查询,而是使用了“PUT”(可能与空帖子相结合)。
我相信如果你使用 curlhttp://localhost:49301/api/donut/run?Task=bake 它会正常工作。
[ PUT 请求将参数作为 URL 的一部分,而 POST 请求则将参数放在请求标头中。
您的应用程序很可能被编程为接受 PUTS 但不接受 POSTS。
答案2
以下工作:
curl --data''http://localhost:49301/api/donut/run?Task=bake
参数“--data''”似乎很重要,因此 curl 执行的是 POST 而不是 GET。
答案3
使用带有 --data 参数的 curl 会导致 curl 进行 POST,但也会将参数作为请求主体的一部分发送,而不是作为通过 URL 传递的参数发送。
鉴于您收到的错误是 MVC 路由错误,指出路由无法解析为操作,我猜测您所针对的操作未设置为从请求主体接收其参数。
尝试:
curl -d '' http://localhost:49301/api/donut/run?Task=bake