C# XML解析:第4行,字符19,text/xmldecl不在输入的开头

C# XML解析:第4行,字符19,text/xmldecl不在输入的开头,c#,asp.net,xml,C#,Asp.net,Xml,您好,我使用了下面的代码,并将XML参数从C#am传递到sql server,得到以下错误“XML解析:第4行,字符19,text/xmldecl不在输入的开头” 问题在于: xs.Serialize(ms, ClientId); string xmlClientid = UTF8Encoding.UTF8.GetString(ms.ToArray()); xs.Serialize(ms, FieldId); string xmlFieldid = UTF8Encoding.UTF8.GetSt

您好,我使用了下面的代码,并将XML参数从C#am传递到sql server,得到以下错误“XML解析:第4行,字符19,text/xmldecl不在输入的开头”

问题在于:

xs.Serialize(ms, ClientId);
string xmlClientid = UTF8Encoding.UTF8.GetString(ms.ToArray());
xs.Serialize(ms, FieldId);
string xmlFieldid = UTF8Encoding.UTF8.GetString(ms.ToArray());
xs.Serialize(ms, FieldId);
string xmlStatusid = UTF8Encoding.UTF8.GetString(ms.ToArray());
Serialize
的第一次调用将整个XML文档写入
MemoryStream
。第二个调用还将完整的XML文档写入同一个流,但它将其放在第一个流之后。因此,对
ToArray
的第二次调用检索一个字节数组,该数组由两个完整的XML文档组成,一个接一个

如果您必须重用同一个流,请考虑调用它来截断使用之间的现有内容:

xs.Serialize(ms, ClientId);
string xmlClientid = UTF8Encoding.UTF8.GetString(ms.ToArray());
ms.SetLength(0);
xs.Serialize(ms, FieldId);
string xmlFieldid = UTF8Encoding.UTF8.GetString(ms.ToArray());
ms.SetLength(0);
xs.Serialize(ms, FieldId);
string xmlStatusid = UTF8Encoding.UTF8.GetString(ms.ToArray());

您尚未包含代码…旁注::“命名过程时避免使用sp_uuu前缀。SQL Server使用此前缀指定系统过程。如果存在同名的系统过程,则使用前缀可能会导致应用程序代码中断。”
      public static DataTable GetPartnerProfileIdforDashboardSearchLevel2(System.String language, System.String clientId, System.String statusProId)
    {
        // create parameters
        SqlParameter[] parameters = new SqlParameter[3];
        parameters[0] = new SqlParameter("@Language", SqlDbType.VarChar, 100, ParameterDirection.Input, true, 0, 0, "",  DataRowVersion.Current, language);
        parameters[1] = new SqlParameter("@ClientId", SqlDbType.Xml, 2147483647, ParameterDirection.Input, true, 0, 0, "",  DataRowVersion.Current, clientId);
        parameters[2] = new SqlParameter("@StatusProId", SqlDbType.Xml, 2147483647, ParameterDirection.Input, true, 0, 0, "",  DataRowVersion.Current, statusProId);

        // Call the stored proc.
        DataTable toReturn = new DataTable("GetPartnerProfileIdforDashboardSearchLevel2");
        bool hasSucceeded = DbUtils.CallRetrievalStoredProcedure("[JobApplicationModule].[dbo].[sp_GetPartnerProfileIdforDashboardSearchLevel2]", parameters, toReturn, null);

        return toReturn;
    }
xs.Serialize(ms, ClientId);
string xmlClientid = UTF8Encoding.UTF8.GetString(ms.ToArray());
xs.Serialize(ms, FieldId);
string xmlFieldid = UTF8Encoding.UTF8.GetString(ms.ToArray());
xs.Serialize(ms, FieldId);
string xmlStatusid = UTF8Encoding.UTF8.GetString(ms.ToArray());
xs.Serialize(ms, ClientId);
string xmlClientid = UTF8Encoding.UTF8.GetString(ms.ToArray());
ms.SetLength(0);
xs.Serialize(ms, FieldId);
string xmlFieldid = UTF8Encoding.UTF8.GetString(ms.ToArray());
ms.SetLength(0);
xs.Serialize(ms, FieldId);
string xmlStatusid = UTF8Encoding.UTF8.GetString(ms.ToArray());