我收到错误:
“使用未分配的局部变量'PostData'”
在方法中编译以下语句时。我的意图是获取包含XML SOAP标头的“字符串”值,并将其转换为XMLDictionaryWriter
对象。请参阅下面的代码:
Stream PostData;
byte[] buffer = Encoding.ASCII.GetBytes(x509.CreateX509SoapEnvelope());
PostData.Write(buffer, 0, buffer.Length); // error here
XmlDictionaryWriter xmlwriter = XmlDictionaryWriter.CreateTextWriter(PostData, Encoding.ASCII);
request.Headers.WriteHeaderContents(0,xmlwriter);
仅供参考,x509.CreateX509SoapEnvelope()
的输出是一个字符串,我测试了那部分并且它有效。我在上面标记了代码以显示错误发生的位置。需要帮助解决错误以及如何修复它?
答案 0 :(得分:5)
您从未为PostData
分配值。因此,它的默认值是null
,并且编译器足够聪明,可以告诉您这是一件坏事(如果它允许您的代码原样,您将获得运行时NullReferenceException
)。您需要实例化一个Stream
的类的实例(Stream
是抽象的,因此您需要一个具体的实例)并将其分配给PostData
。
答案 1 :(得分:3)
您已声明PostData
,但未对其进行初始化。
你需要:
Stream PostData = new StreamWriter(filename);
至少。有关各种初始化程序的详细信息,请参阅MSDN documentation。
答案 2 :(得分:0)
我想我是在跟你做同样的事情。我使用了一个不需要文件的MemoryStream来实例化。见下面的参考文献: