Jason/ajax web service call get redirected (302 Object moved) and then 500 unknow webservice name
- by user646499
I have been struggling with this for some times.. I searched around but didnt get a solution yet. This is only an issue on production server. In my development environment, everything works just fine.
I am using JQuery/Ajax to update product information based on product's Color attribute. for example, a product has A and B color, the price for color A is different from color B.
When user choose different color, the price information is updated as well.
What I did is to first add a javascript function:
function updateProductVariant() {
var myval = jQuery("#<%=colorDropDownList.ClientID%").val();
jQuery.ajax({
type: "POST",
url: "/Products.aspx/GetVariantInfoById",
data: "{variantId:'" + myval + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var obj = jQuery.parseJSON(response.d);
jQuery("#<%=lblStockAvailablity.ClientID%>").text(obj.StockMessage);
jQuery(".price .productPrice").text(obj.CurrentPrice);
jQuery(".price .oldProductPrice").text(obj.OldPrice);
}
});
}
Then I can register the dropdown list's 'onclick' event point to function 'updateProductVariant'
GetVariantInfoById is a WebGet method in the codebehind, its also very straightforward:
[WebMethod]
public static string GetVariantInfoById(string variantId)
{
int id = Convert.ToInt32(variantId);
ProductVariant productVariant = IoC.Resolve().GetProductVariantById(id);
string stockMessage = productVariant.FormatStockMessage();
StringBuilder oBuilder = new StringBuilder();
oBuilder.Append("{");
oBuilder.AppendFormat(@"""{0}"":""{1}"",", "StockMessage", stockMessage);
oBuilder.AppendFormat(@"""{0}"":""{1}"",", "OldPrice", PriceHelper.FormatPrice(productVariant.OldPrice));
oBuilder.AppendFormat(@"""{0}"":""{1}""", "CurrentPrice", PriceHelper.FormatPrice(productVariant.Price));
oBuilder.Append("}");
return oBuilder.ToString();
}
All these works fine on my local box, but if i upload to the production server, catching the traffic using fiddler, /Products.aspx/GetVariantInfoById becomes a Get call instead of a POST
On my local box,
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 03 Mar 2011 09:00:08 GMT
X-AspNet-Version: 4.0.30319
Cache-Control: private, max-age=0
Content-Type: application/json; charset=utf-8
Content-Length: 117
Connection: Close
But when deployed on the host, it becomes
HTTP/1.1 302 Found
Proxy-Connection: Keep-Alive
Connection: Keep-Alive
Content-Length: 186
Via: 1.1 ADV-TMG-01
Date: Thu, 03 Mar 2011 08:59:12 GMT
Location: http://www.pocomaru.com/Products.aspx/GetVariantInfoById/default.aspx
Server: Microsoft-IIS/7.0
X-Powered-By: ASP.NET
then of course, then it returns 500 error titleUnknown web method GetVariantInfoById/default.aspx.Parameter name: methodName
Can someone please take a look? I think its some configuration in the production server which automatially redirects my webservice call to some other URL, but since the product server is out of my control, i am seeking a local fix for this.
Thanks for the help!