私は、ページ上のメソッドを呼び出して(ロジックを行い、WCFサービスを呼び出してオブジェクトを返します)、次のような.Ajaxメソッドがあります。.Ajaxメソッドはローカルマシンでは動作しますが、サーバ上では動作しません
$.ajax({
type: 'POST',
url: 'MyPage.aspx/TestMethod',
dataType: "json",
contentType: "application/json",
data: "{'Id': '" + Id + "'}",
success: function (data) {
$("#randomElement").html(data.d.Foo);
},
error: function ((xhr, textStatus, error){
alert(xhr.statusText);
alert(textStatus);
alert(error);
});
そして後ろのページ:これは私のローカルマシン上で完全に正常に動作しますが、私は自分のサーバーに展開するときに動作しない
[System.Web.Services.WebMethod]
public static MyObject TestMethod(string Id)
{
//Logic removed for readability!
return MyService.GetStuff(Id);
}
。
ページビハインドメソッドが呼び出されない(つまり、サービスを呼び出すTestMethod()ではなく)TestMethod()を呼び出す際にエラーが発生していると判断しました。
ライブサーバー上のuriで面白い何かをしている場合に備えて、私がページのパスを表示するために.ajaxメソッドの前にアラートを表示し、 "/ MyPage私が期待するように.aspx "。
また、「url:」を完全なuriに変更して、それが役に立たなかったかどうかを確認しました。カスタムエラーをオフにした状態でシオマネキを実行した後
、私は次のエラーを取得する:
{"Message":"Thread was being aborted.","StackTrace":" at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)\r\n at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)\r\n at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)\r\n at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary
2 parameters)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary
2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.Threading.ThreadAbortException"}
URLは 'MyPage.aspx/TestMethod'の代わりに' MyPage.asmx/TestMethod'でしょうか? –
サーバーで失敗したときに、Ajaxリクエストからどのような応答が得られますか?それは200、404、500、何か他のものを返していますか? – kendaleiv
@ JohnPickいいえ、呼び出しは、asmx Webサービスではなく、aspx Webページの背後にあるメソッドへの呼び出しです。 – Ben