gpt4 book ai didi

asp.net - 无法在 Azure 网站上使用 POST

转载 作者:行者123 更新时间:2023-12-03 05:06:24 30 4
gpt4 key购买 nike

我有一个带有 REST Webservices 的 asp.net Web 应用程序,它在本地运行良好,但是当我将其上传到 Azure 时,它​​不再工作...我正在执行 POSTasync,但我可以在我的日志文件中看到GET 被执行。

我已按照建议更新了我的 web.config herehere但它并没有改变任何东西。

这是我的消息 Controller :

Imports System.Net
Imports System.Net.Http
Imports System.Web.Http
Imports Microsoft.Practices.EnterpriseLibrary.Logging

Public Class Test
Public Subject As String
Public Body As String
End Class

Public Class MessagesController
Inherits ApiController

' GET api/<controller>
Public Function GetAllValues() As DataTable
...
End Function
' POST api/<controller>
Public Function PostValue(<FromBody()> ByVal value As Test) As HttpResponseMessage
...
End Function

我还尝试将 Function PostValue 更改为 Sub PostValue 但没有成功。

我的 Global.asax 看起来像这样:

Imports System.Web.SessionState
Imports System.Web.Http

Public Class Global_asax
Inherits System.Web.HttpApplication

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Web.Routing.RouteTable.Routes.MapHttpRoute(name:="DefaultApi", routeTemplate:="api/{controller}/{id}", defaults:=New With {
Key .id = System.Web.Http.RouteParameter.[Optional]})
End Sub

如果 GetAllValues 存在,PostAsync 会出于任何原因调用 GetAllValues。如果我删除 GetAllValues 进行测试,则会收到“不允许使用方法”。

这是我在测试 aspx 页面上使用的调用 REST Web 服务的方法:

Private Async Sub PostTest_Click(sender As Object, e As EventArgs) Handles PostTest.Click
Dim m As New Test
m.Subject = "Test"
m.Body = "Testbody"

Dim client As New Http.HttpClient

Dim JsonData As String = JsonConvert.SerializeObject(m)
Dim theContent As New Http.StringContent(JsonData, Encoding.UTF8, "application/json")
Dim aResponse As Http.HttpResponseMessage = Await client.PostAsync("https://example.com/api/messages/", theContent)

更新当我从 Controller 中删除 GET 方法时,我收到错误消息“MethodNotAllowed”。仔细看看返回的内容让我更加困惑。内容为:

{"Message":"The requested resource does not support http method 'GET'."}

但我正在使用 Await 客户端。Post异步 ....?

更新2我也尝试过 PostAsJsonAsync,但错误仍然是不支持 'GET'....

更新3我现在已经使用Fiddler似乎 POST 本身工作正常...使用 Fiddler Composer,我可以将 POST 发送到我的 azure https URL,并且 POST 过程按预期触发...现在我不知道为什么 client.PostAsync 和 client.PostAsJsonAsync似乎将 GET 发送到 azure live url,而相同的代码在我的本地主机上发送 POST.... :-(

最佳答案

终于我找到了答案......我必须删除结尾的斜杠!我使用了“https://example.com/api/messages/ ”,这将自动生成 GET,无论我使用的是 PostAsync 还是 PostAsJsonAsync。

使用“https://example.com/api/messages ”,GET 和 POST 似乎都工作正常!!

关于asp.net - 无法在 Azure 网站上使用 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42559559/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com