클라이언트에서 웹 서비스로 byte []를 보내려고합니다. 배열은 직렬화 된 XML 파일로 구성됩니다.바이트 [] 크기가 웹 서비스로 전송되는 문제가 있습니까?
내 테스트 시나리오가 작동합니다 (매우 작은 바이트 []). 여기에 코드입니다 :
FormsService.FormsServiceClient client = new FormsService.FormsServiceClient();
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("root");
XmlElement element = doc.CreateElement("child");
root.AppendChild(element);
doc.AppendChild(root);
MemoryStream ms = new MemoryStream();
doc.Save(ms);
byte[] bytes = ms.ToArray();
if (client.ServerActive())
{
client.SubmitForm(bytes);
Console.ReadLine();
}
그리고 서비스 측 코드는 다음과 같습니다
public byte[] SubmitForm(byte[] bytes)
{
XmlDocument doc = new XmlDocument();
string xml = Encoding.UTF8.GetString(decryptedBytes);
doc.LoadXml(xml);
XmlNodeList nodeList = doc.GetElementsByTagName("child");
byte[] returnBytes = Encoding.UTF8.GetBytes(nodeList[0].Name);
return bytes;
}
이 완벽하게 작동합니다. 결과는 정확합니다.
그러나 콘솔에 표시 할 때 올바르게 읽는 파일 시스템에서 실제 xml 파일을 읽으려고하면 submission은 배열을 수락하고 반환하려고해도 오류를 반환합니다.
FormsService.FormsServiceClient client = new FormsService.FormsServiceClient();
XmlDocument doc = new XmlDocument();
doc.Load(myFilePath);
MemoryStream ms = new MemoryStream();
doc.Save(ms);
byte[] bytes = ms.ToArray();
if (client.ServerActive())
{
client.SubmitForm(bytes);
Console.ReadLine();
}
서비스 측 코드 : 0
유형 'System.ServiceModel.Dispatcher.NetDispatcherFaultException'의 첫 번째 예외가 mscorlib.dll에서
의 실제 클라이언트 측 코드 발생
public byte[] SubmitForm(byte[] bytes)
{
return bytes;
{
이전에이 문제가 발생 했습니까? 두 경우의 차이점은별로 없지만 C#에서는 경험이 없습니다.
모든 의견을 많이 주시면 감사하겠습니다.
감사합니다.
badPanda
서비스 측'SubmitForm'은 매우 특이합니다. 한번도 사용하지 않은 returnBytes 객체를 만든 다음 원래의'bytes' 매개 변수를 아무 것도하지 않고 호출자에게 반환합니다. 그게 설계된거야? –
있습니다. 이것은 일반적인 기능을 작동시키기 위해 테스트 한 코드 일뿐입니다. 실제 응용 프로그램은 반환 된 바이트 배열을 사용하며 전송 된 것과 동일하지 않습니다. 그래도 고마워! – badpanda