【问题标题】:Not working on azure server but works fine in local environment?不在天蓝色服务器上工作,但在本地环境中工作正常?
【发布时间】:2016-12-29 09:49:29
【问题描述】:

我有 jQuery Ajax 方法可以在 C# 代码中调用 Web 方法。该代码在本地环境中运行良好,但在服务器中不起作用。但是一些 web 方法和 jQuery Ajax 调用在普通的 SQL 语句中可以正常工作,但是对于返回一些数据的 web 方法中的存储过程它不起作用。它显示一条错误消息为

{Message: "处理请求时出错。",StackTrace:"", ExceptionType: ""}
异常类型:""
消息:“处理请求时出错。”
堆栈跟踪:“”

这是我的 Ajax 调用...

$.ajax({
            url: "AutoRFQ_Vendors_SP.aspx/BindGrid"
            , type: "POST"
            , data: JSON.stringify(objdrpdata)
            , contentType: "application/json;"
            , success: function (data) {
                $body.removeClass("loading");
                var vendorsource = {
                    datatype: "json"
                    , localdata: data.d
                    , datafields: [
                        {
                            name: 'CommonMakerNameDisplay'
                        }
                        , {
                            name: 'EqpExtendType'
                        }
                        , {
                            name: 'CommonMakerName'
                        }
                        , {
                            name: 'IsForAutoRFQ'
                        }
                        , {
                            name: 'VendorName'
                        }
                        , {
                            name: 'CurrencyCode'
                        }
                        , {
                            name: 'Proc_Vendors_AllowedCurrencyID'
                        }
                        , {
                            name: 'SortCode'
                        }
                        , {
                            name: 'xSortCode'
                        }
                        , {
                            name: 'IsTitle'
                        }
                        , {
                            name: 'NoOfRFQs'
                        }
                        , {
                            name: 'NoOfOrders'
                        }
                        , {
                            name: 'TotalPOAmtInUSD'
                        }
                    }
                });

这是我的网络方法:

[WebMethod(EnableSession = true)]
public static string BindGrid(string vslFilter, string yearFilter, string eqpmtFilter) 
{
      DataTable dt = null;

      string gridvendorlist = "";

      try 
      {
           if (HttpContext.Current.Session["P_Hub_AutoRFQVendorDataTable"] == null || (string) HttpContext.Current.Session["P_Hub_AutoRFQVslFilter"] != vslFilter || (string) HttpContext.Current.Session["P_Hub_AutoRFQYearFilter"] != yearFilter || (string) HttpContext.Current.Session["P_Hub_AutoRFQEqpmtFilter"] != eqpmtFilter) 
           {
               string vslFilterType = "", vslFilterValue = "";

               if (vslFilter.Length == 3) 
                   vslFilter = "VSL-" + vslFilter;

               string[] vslType = vslFilter.Trim().Split('-');

               if (vslType[0].ToString().Trim().ToUpper() == "VSL") 
               {
                   vslFilterType = "VSL";
                   vslFilterValue = vslType[1].ToString();
               } 
               else if (vslFilter != "-1") 
               {
                   vslFilterType = "Group";
                   vslFilterValue = vslFilter.ToString();
               }

               string spName = "W_Enh_CommonMakers_RFQVendors";

               string[] paramField = { "@CompanyCode", "@VslFilterType",
                                       "@VslFilterValue", "@NoOfYrToShow",
                                       "@EQ_EquipmentID" };
               object[] paramValue = { GenFuncs.COMPANYCODE,
                                       vslFilterType,
                                       vslFilterValue,
                                       yearFilter,
                                       eqpmtFilter };
               dt = DBFuncs.dbExecuteSP(spName, paramField, paramValue);

               HttpContext.Current.Session["P_Hub_AutoRFQVendorDataTable"] = dt;
               HttpContext.Current.Session["P_Hub_AutoRFQVendorSelectedRowIndex"] = null;
               HttpContext.Current.Session["P_Hub_AutoRFQ_ScrollIndex"] = null;
               HttpContext.Current.Session["P_Hub_AutoRFQVslFilter"] = vslFilter;
               HttpContext.Current.Session["P_Hub_AutoRFQYearFilter"] = yearFilter;
               HttpContext.Current.Session["P_Hub_AutoRFQEqpmtFilter"] = eqpmtFilter;

               gridvendorlist = Func_Ajax.GetJson(dt);
           } 
           else 
           {
               dt = (DataTable)HttpContext.Current.Session["P_Hub_AutoRFQVendorDataTable"];
               gridvendorlist = Func_Ajax.GetJson(dt);
           }
      } 
      catch (Exception err) 
      {
           GenFuncs.AddToErrLog("-1", "xxx", "Error", err.Message, Path.GetFileName(HttpContext.Current.Request.PhysicalPath), "BindGrid");
      } 
      finally 
      {
           dt = null;
      }

      return gridvendorlist;
 }

我需要在服务器中做任何额外的事情吗?

【问题讨论】:

  • 嗨 ..sorry ... 是 Azure webApp .. 还是 Azure VM? ..你打开http端口了吗?
  • 是的,它是一个 Azure webApp ...是的,我可以打开 http 端口..
  • 你打开了吗? ..你有没有在谷歌浏览器控制台中检查你前端的 xhr 请求? (如果指向正确的服务器等)
  • 是的,它只指向我正确的服务器
  • 尝试激活错误 .with customError=off in web config

标签: c# jquery asp.net ajax azure-web-app-service


【解决方案1】:

经过 5 小时的探索,我终于在我的 web.config 文件中发现了一些愚蠢的错误

  <system.web.extensions>
        <scripting>
          <webServices>
            <jsonSerialization maxJsonLength="2147483647"/>
          </webServices>
        </scripting>
      </system.web.extensions>

工作正常....谢谢

【讨论】:

    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2016-09-13
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多