ローカルで正常に動作するREST Webservicesを持つasp.net Webアプリケーションがありますが、Azureにアップロードするともう動作しません...私はPOSTasyncをやっていますしかし、ログファイルにGETが実行されているのがわかりました。Azure WebサイトでPOSTを実行できませんでした
提案したhereとhereでweb.configを更新しましたが、何も変更されませんでした。ここで
は私MessageControllerです:
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
私も成功せず、サブPostValueに機能PostValueを変更しようとしました。
私のGlobal.asaxのは、次のようになります。GetAllValuesが存在する場合
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
、PostAsyncは、何らかの理由でGetAllValuesを呼び出します。テストのためにGetAllValuesを削除すると、 "Method not allowed"と表示されます。ここで
は、私はREST Webサービスを呼び出すために私のテストaspxページで使用する方法である:
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)
更新 私は私のコントローラからのGETメソッドを削除すると、私はエラーメッセージ「MethodNotAllowed」を取得します。返された内容を詳しく見ると、私はさらに混乱します。内容は次のとおりです。
{"Message":"The requested resource does not support http method 'GET'."}
しかし、私はAwaitクライアントを使用しています。 投稿非同期....?私は今Fiddlerと、それを使用しました2 私もPostAsJsonAsyncを試してみたが、エラーがまだサポートされていないこと'GET'です....
アップデート3
更新POST自体が正常に機能しているようです... Fiddler Composerを使用すると、私の青いhttps URLにPOSTを送信することができ、POSTプロセスが期待どおりにトリガされます...なぜ、client.PostAsyncとclient.PostAsJsonAsyncの両方が同じコードがローカルホスト上でPOSTを送信している間に、空白のライブURLにGETを送信してください.... :-(
ちょうど好奇心 - あなたのアプリは何のポートを聴いていますか? –
これはhttpsを使用するので、私のasp.netソリューションに含まれているので、ポートは443にする必要があります。 – K232