私はこれに関するいくつかの助けが必要です。私と優しくしてください、私は専門家ではありません - まだ。c#webservice return error
問題は、クライアント(ブラウザ)からJSON経由でサーバー(Webサービス)にデータを送信しようとしていることです。 FiddlerでPOSTデータを見ると、私が送るJSONを見ることができます。これは有効です(テスト済み)。 しかし、私のWebサービス(手動でテストしてからOKを返すと)は次のようになります: "{"メッセージ ":"リクエストを処理する際にエラーが発生しました "、" StackTrace ":" "、" ExceptionType " ""} "
残念ながら内部使用のために私はあなたのためのwebserviceを公開することはできません。
誰かが私に説明したことが間違っていますか?
1)Javascriptコード:
<script>
var markers = "{param1:1, param2:\"test\"}";
$.ajax({
type: "POST",
url: "http://xxx.xxx.xxx.xxx/site/util.asmx/CreateMarkers",
// The key needs to match your method's input parameter (case-sensitive).
data: JSON.stringify({ Markers: markers }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) { alert(data); },
failure: function (errMsg) {
alert(errMsg);
}
});
</script>
2)ASMXコード
<%@ WebService Language="C#" Class="site.Util" %>
using System;
using System.Web.Services;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Services;
namespace site{
[WebService(Namespace="http://xxx.xxx.xxx.xxx/site/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Util: WebService
{
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string CreateMarkers(int param1, string param2)
{
return "OK";
}
}
試しに一致するように送信されたデータをフォーマットしてみてください。 data:marker、... param1、param2のupパラメータが一致するデータは既にjson形式であるようです。ルートマーカープロパティは必要ありません。 – Andez
また、Postman(https://www.getpostman.com/)などのアプリを使用して、WebサービスAPIをテストすることもできます。スタンドアローンでも、ブラウザにもプラグインとして使用できます。純粋なAPIをテストしてデータを送受信することができますので、送受信するものが期待どおりであることを確認することができます。 –
@Andezありがとうございます。変更を加えなければ、これは私がフィドラーで見ることができます。{"Markers" : "{param1:1、param2:\" test \ ""}もし私があなたが{param1:1、param2: "test"}が有効なJSONではないことがわかったら、私はこの部分が正しいと思います。この正しいことを理解していない私かもしれません。さらに手伝ってもらえますか?上記の答えで –