这个是结果的异常 Exception 获得的描述
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> Line 1: Incorrect syntax near ','.
很奇怪,把相同的程序放在本地 就可以通过,,放到网上就不行,,
服务器一个在辽宁 一个在美国,,我怀疑是不是 IIS限制了字符? 还是什么原因?

解决方案 »

  1.   

    防火墙肯定是有的,
    代理服务器? 不清楚,我们是租的机房
    因为我要把数据回传给美国数据库,,而美国数据库做的安全策略很多,,
    这个异常报的是 ',' 附近有问题,,是不是有什么特殊字符不允许通过IIS访问? 还是?
      

  2.   

    代码有点长,,如果问题解决了 可以加分string TableName = dtb.TableName;            StringBuilder cloumn_list = new StringBuilder();
                StringBuilder insertValue = new StringBuilder();
                StringBuilder sb_Update = new StringBuilder();
                string InsertSql = "INSERT INTO {0} ({1}) VALUES ({2})";
                string UpdateSql = "Update {0} Set {1} WHERE {2} = {3}";
                string SelectSql = "SELECT * FROM {0} WHERE {1} = {2}";            int return_Value = dtb.Rows.Count;            for (int r = 0; r < dtb.Rows.Count; r++)
                {
                    if (TableName == "ManifestHistory")
                    {
                        using (SqlDataReader sr = SqlHelper.ExecuteReader(connectionString, CommandType.Text, string.Format(SelectSql, TableName, "MHID", dtb.Rows[r]["MHID"].ToString())))
                        {
                            if (sr.Read())
                            {
                                #region 修改                            for (int i = 1; i < dtb.Columns.Count; i++)
                                {
                                    sb_Update.Append(dtb.Columns[i].ColumnName);
                                    //int  float 不加 '  其他的加 '
                                    if (dtb.Columns[i].DataType.ToString() != "System.Int32" && dtb.Columns[i].DataType.ToString() != "System.Double" && dtb.Columns[i].DataType.ToString() != "System.Decimal")
                                    {
                                        sb_Update.Append(" = N'" + dtb.Rows[r][i].ToString().Replace("'", "''") + "'");
                                    }
                                    else
                                    {
                                        sb_Update.Append(" = " + dtb.Rows[r][i].ToString().Replace("'", "''"));
                                    }
                                    sb_Update.Append(",");
                                }
                                if (sb_Update.Length > 0)
                                {
                                    sb_Update.Remove(sb_Update.Length - 1, 1);
                                }
                                else
                                {
                                    throw new Exception();
                                }
                                string sql_temp = string.Format(UpdateSql, TableName, sb_Update.ToString(), "MHID", dtb.Rows[r]["MHID"].ToString());
                                try
                                {
                                    SqlHelper.ExecuteNonQuery(connectionString, CommandType.Text, sql_temp);
                                }
                                catch (Exception ex)
                                {
                                    SendEmail("发生错误的表SQL语句是:<br>" + sql_temp + "<br>发生错误的表原因是:<br>" + ex.ToString());
                                    return_Value--;
                                }                            sb_Update.Remove(0, sb_Update.Length);                            #endregion                            continue;
                            }
                        }
                    }                #region 插入                for (int i = 0; i < dtb.Columns.Count; i++)
                    {
                        cloumn_list.Append(dtb.Columns[i].ColumnName);
                        //int  float 不加 '  其他的加 '
                        if (dtb.Columns[i].DataType.ToString() != "System.Int32" && dtb.Columns[i].DataType.ToString() != "System.Double" && dtb.Columns[i].DataType.ToString() != "System.Decimal")
                        {
                            insertValue.Append("N'" + dtb.Rows[r][i].ToString().Replace("'", "''") + "'");
                        }
                        else
                        {
                            insertValue.Append(dtb.Rows[r][i].ToString().Replace("'", "''"));
                        }
                        cloumn_list.Append(",");
                        insertValue.Append(",");
                    }
                    if (cloumn_list.Length > 0 || insertValue.Length > 0)
                    {
                        cloumn_list.Remove(cloumn_list.Length - 1, 1);
                        insertValue.Remove(insertValue.Length - 1, 1);
                    }
                    else
                    {
                        throw new Exception();
                    }
                    string sql = string.Format(InsertSql, TableName, cloumn_list.ToString(), insertValue.ToString());
                    try
                    {
                        SqlHelper.ExecuteNonQuery(connectionString, CommandType.Text, sql);
                    }
                    catch (Exception ex)
                    {
                        SendEmail("发生错误的表SQL语句是:<br>" + sql + "<br>发生错误的表原因是:<br>" + ex.ToString());
                        return_Value--;
                    }                cloumn_list.Remove(0, cloumn_list.Length);
                    insertValue.Remove(0, insertValue.Length);                #endregion            }            if (IsNeedTransitStatus)
                {
                    string Error = string.Empty;                for (int r = 0; r < dtb.Rows.Count; r++)
                    {
                        string trackPkg_TrackNumber = dtb.Rows[r]["MHTrackNumber"].ToString();
                        string trackPkg_userid = "0";
                        string SQL_SELECT = "SELECT TSUserID FROM TransitStatus WHERE TSEmsStatus = 'EMA' AND TSTrackNumber = '" + trackPkg_TrackNumber + "'";
                        using (SqlDataReader sr_user = SqlHelper.ExecuteReader(connectionString, CommandType.Text, SQL_SELECT))
                        {
                            if (sr_user.Read())
                            {
                                trackPkg_userid = sr_user.GetValue(0).ToString();
                            }
                        }                    string SQL_SELECTHave = "SELECT TSUserID FROM TransitStatus WHERE TSEmsStatus = 'EMC' AND TSTrackNumber = '" + trackPkg_TrackNumber + "'";
                        using (SqlDataReader sr_user = SqlHelper.ExecuteReader(connectionString, CommandType.Text, SQL_SELECTHave))
                        {
                            if (sr_user.Read())
                            {
                                continue;
                            }
                        }
                        string SQL_FlightDate = "SELECT ManifestFlightDate FROM Manifest WHERE ManifestNumber = '" + dtb.Rows[r]["MHManifestNo"].ToString() + "'";
                        string FlightDate = "getdate()";
                        using (SqlDataReader sr_Date = SqlHelper.ExecuteReader(connectionString, CommandType.Text, SQL_FlightDate))
                        {
                            if (sr_Date.Read())
                            {
                                FlightDate = "'" + sr_Date.GetValue(0).ToString().Trim() + " 0:00:00" + "'";
                            }
                        }                    string SQL_Insert = "insert into transitstatus(tstracknumber,tsemsstatus,tsuserid,tsiscomplate,tsupdatetime)values('" + trackPkg_TrackNumber + "','EMC'," + trackPkg_userid + ",1," + FlightDate + ")";
                        SqlHelper.ExecuteNonQuery(connectionString, CommandType.Text, SQL_Insert);
                    }                if (Error.Length > 0)
                    {
                        SendEmail(Error);
                    }            }
      

  3.   

    line1应该是<%@ServiceHost language="c#" Debug="true" Service="Wilcom.Webservices.CrmServices.CRMCustomerService" %>这样的东西吧。
    好像不应该有","这样的字符啊,能不能贴下line1的内容。如果有的服务器可以,我才是net版本没有选对:)
      

  4.   

    其实对于他说的line1 我也不知道是什么东西,,,
    但我觉得应该是被服务器给过滤掉了什么东西,,要不然不可能本地没问题,网上有问题
    至于你说的SQL语句,,我个人认为应该不会有问题,,因为本地测试结果是OK的
      

  5.   

    嗯 你说 net版本,,我用 VS2010  .net2.0开发  而且服务器装的也只有2.0 没有4.0
    所以应该也不会有问题,,,
    但最近用 WebService 确实有着形形色色的问题,,
    但大多数都是  第一次失败,,再来一次就OK  或者多试两次  就会成功,,
    我感觉应该不像是程序问题,,就这段代码 我看不出有什么随机性在里边,,但是今天却遇到了  始终不好用的情况
      

  6.   

    不要贴代码了,应该不是代码的问题。你可以只用简单的 Hello World的 Service 进行测试。估计服务器限制请求有关系
    Server was unable to process request
      

  7.   


    连接服务器的程序不只一个,都是调用的同一个WebService  只有这个有问题
    而且并不是说这个方法有问题,,其他的数据调用这个都没事,,,
    只有一个数据过不去,,,卡住了,,但这个数据的数据量也比较大筛选起来也不太容易