Service 在.net framework 4.0上部署时,asmx服务引发错误

Service 在.net framework 4.0上部署时,asmx服务引发错误,service,asmx,Service,Asmx,我有一个基于.NETFramework 3.5的ASMXWeb服务。我在服务器上部署了它,并将应用程序池的框架版本设置为4.0(集成版)。在进行更改后,如果我尝试使用soap客户端以xml格式向服务发送请求,我会收到错误“根行1位置1处的数据无效”。如果我将应用程序池的运行时版本更改为2.0,它工作正常。我在2003年的服务器上一直工作正常。有人能告诉我这有什么问题吗 我能够把问题缩小到一点。如前所述,我拥有的服务是一个asmx服务,我发现当将应用程序池更改为4.0时,当我通过soap客户端向服

我有一个基于.NETFramework 3.5的ASMXWeb服务。我在服务器上部署了它,并将应用程序池的框架版本设置为4.0(集成版)。在进行更改后,如果我尝试使用soap客户端以xml格式向服务发送请求,我会收到错误“根行1位置1处的数据无效”。如果我将应用程序池的运行时版本更改为2.0,它工作正常。我在2003年的服务器上一直工作正常。有人能告诉我这有什么问题吗

我能够把问题缩小到一点。如前所述,我拥有的服务是一个asmx服务,我发现当将应用程序池更改为4.0时,当我通过soap客户端向服务发送xml请求时,我在while循环中得到的根级别的错误数据无效,这是在使用xsd验证请求时给出的。请找到下面的方法。该错误正好在while循环中抛出。不确定错误是什么。在调用此方法之前,请求被序列化,您可以在下面找到该代码。不确定错误是在序列化期间还是在验证期间发生,我的意思是,可能是请求未正确序列化,因此验证失败,但不确定是否存在此问题

//系列化

       XmlSerializer serializer = new XmlSerializer(MyRequest.GetType()); //MyRequest is the input object.
       MemoryStream memoryStream = new MemoryStream();
        UnicodeEncoding uniEncoding = new UnicodeEncoding();
        TextWriter textWriter = new StreamWriter(memoryStream, Encoding.Unicode);
        serializer.Serialize(textWriter, MyRequest);
        int count = (int)memoryStream.Length;            
        byte[] requestArray = new byte[count];           
        memoryStream.Seek(0, SeekOrigin.Begin);
        memoryStream.Read(requestArray, 0, count);
        string stringXML= uniEncoding.GetString(requestArray).Trim();

    public bool ValidateXML(string stringXML, Uri schemaURI)
    {
        XmlSchemaSet sc = null;
        XmlReaderSettings settings = null; 
        XmlReader reader = null;
        StringReader txtReader = null;

        try
        {
            // Create the XmlSchemaSet class.
            sc = new XmlSchemaSet();

            sc.Add(null, schemaURI.ToString());

            // Set the validation settings.
            settings = new XmlReaderSettings();
            settings.ValidationType = ValidationType.Schema;
            settings.Schemas = sc;

            txtReader = new StringReader(stringXML);          
            // Create the XmlReader object.
            reader = XmlReader.Create(txtReader, settings);                                                             
             while (reader.Read())
            {             
            }
            reader.Close();
            return true;
        }                       
    }

看起来问题不完全在于框架,可能是您用于序列化的类造成的。 替换整个序列化代码,如下所示。这本书解决了这个问题

XmlSerializer xsSubmit = new XmlSerializer(typeof(MyObject));
var subReq = new MyObject();
StringWriter sww = new StringWriter();
XmlWriter writer = XmlWriter.Create(sww);
xsSubmit.Serialize(writer, subReq);
var xml = sww.ToString(); // Your xml

您是否尝试过使用.NET4.0构建它?是的,也尝试过,但仍然存在相同的错误。下面是有关此问题的更多详细信息。下面是什么?我没有看到任何细节。很抱歉,由于某些原因添加了评论。我在问题中增加了更多细节。