1

ASMX Web サービスがあり、結果を JSON 形式で返したいと考えています。私のWebメソッドにパラメーターがない場合、正常に機能します。

    [WebService(Namespace = "http://www.arslanonline.com/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class AuthService : System.Web.Services.WebService {

        public AuthService () {

            //Uncomment the following line if using designed components 
            //InitializeComponent(); 
        }

        [WebMethod]
        [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
        public string Authenticate(string username, string password, string appId)
        {
            return ToJson("Hello World");
        }

 public static string ToJson(object obj)
    {
        return JsonConvert.SerializeObject(obj);
    }

 [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string Test()
    {
        return ToJson("Hello World");
    }

この方法でテスト Web メソッドを呼び出すと、正常に動作します

string url= "http://localhost:45548/Moves/AuthService.asmx/Test";
 string dataToPost= "";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.Method = "POST";
                request.ContentType = "application/json;";
                request.BeginGetRequestStream(new AsyncCallback(DoHTTPPostRequestReady), new HttpWebRequestData<string>()
                {
                    Request = request,
                    Data = dataToPost
                });

JSON結果を返します。しかし、私の2番目のメソッドAuthenticateでは、いくつかのパラメーターを取り、そのように要求しています

string url= "http://localhost:45548/Moves/AuthService.asmx/Authenticate";
     string dataToPost= "username=ABC&password=123&appid=1";
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    request.Method = "POST";
                    request.ContentType = "application/json;";
                    request.BeginGetRequestStream(new AsyncCallback(DoHTTPPostRequestReady), new HttpWebRequestData<string>()
                    {
                        Request = request,
                        Data = dataToPost
                    });

そして、それは私に与えますNot Found Errorが、私が変わるとrequest.ContentType = "application/x-www-form-urlencoded"; 正常に動作し、結果を XML で返しますが、JSON 形式では返しません。なぜこれが起こっているのか 誰でも私のコードのどこに問題があるのか​​教えてください。

4

1 に答える 1

4

メソッドの戻り値の型として void を使用します。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void Test()
{
   System.Web.HttpContext.Current.Response.Write(ToJson("Hello World"));
}
于 2013-09-03T06:59:57.983 に答える