Asp.net 对非null值的NullReference

Asp.net 对非null值的NullReference,asp.net,xml,vb.net,Asp.net,Xml,Vb.net,我有一个函数,它获取传递给它的字符串。在测试函数时,我在传递给它的字符串参数上得到一个null引用异常,即使字符串不是null,我也不明白为什么会出现这个错误。我在下面有一个屏幕截图 我使用了一个伪值来验证SelectSingleNode函数中的string参数和传递给我的函数的newValue string参数,它们都包含值,所以我不明白为什么它会抛出null引用异常。为了清楚起见,该函数的目的是将值写回XML文件的节点 更新 很抱歉没有发布代码 Private Sub setValue(B

我有一个函数,它获取传递给它的字符串。在测试函数时,我在传递给它的字符串参数上得到一个null引用异常,即使字符串不是null,我也不明白为什么会出现这个错误。我在下面有一个屏幕截图

我使用了一个伪值来验证SelectSingleNode函数中的string参数和传递给我的函数的newValue string参数,它们都包含值,所以我不明白为什么它会抛出null引用异常。为了清楚起见,该函数的目的是将值写回XML文件的节点

更新

很抱歉没有发布代码

Private Sub setValue(ByVal nodeToMod As String, ByVal newValue As String)
        ''Test writing to xml config file
        Dim dummy As String = "Config/" & nodeToMod
        Dim xmlDoc As New XmlDocument
        Using fs As FileStream = New FileStream(HttpContext.Current.Server.MapPath("~/XML_Config/Config.xml"), FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
            xmlDoc.Load(fs)
            Dim foo As XmlNode = xmlDoc.SelectSingleNode(dummy)
            Console.WriteLine(foo.InnerXml)
            fs.Seek(0, SeekOrigin.Begin)
            fs.SetLength(0)
            xmlDoc.Save(fs)
        End Using
    End Sub
这是我正在使用的XML文件

<?xml version="1.0" encoding="utf-8"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Username>john.doe@email.com</Username>
  <Password>Password1</Password>
  <ProductType>MyProduct</ProductType>
  <DirectoryEntryPath>LDAP://myDomain</DirectoryEntryPath>
  <SMTPDefaultOnly>True</SMTPDefaultOnly>
  <Logo>myLogo.gif</Logo>
</Config>

确保您正在创建的FileStream对象不为空。可能它找不到config.xml文件?

请确保您正在创建的FileStream对象不为空。可能它找不到config.xml文件?

投诉的空引用是调用
SelectSingleNode
的结果。也就是说,当根据文档计算通过连接
/Config/
nodeToMod
的内容而形成的xpath时,没有节点匹配。因此,您得到null,并且尝试将
InnerText
设置为null会产生异常


我们确实需要查看
nodeToMod
和xml文件本身,以进一步提供帮助。另外,请发布代码而不是截图

投诉的空引用是调用
SelectSingleNode
的结果。也就是说,当根据文档计算通过连接
/Config/
nodeToMod
的内容而形成的xpath时,没有节点匹配。因此,您得到null,并且尝试将
InnerText
设置为null会产生异常


我们确实需要查看
nodeToMod
和xml文件本身,以进一步提供帮助。另外,请发布代码而不是截图

可能是
SelectSingleNode
的结果为空

将该行更改为两行,将更容易在调试器中看到问题:

Dim node = xmlDoc.SelectSingleNode(dummy)
node.InnerText = newValue

SelectSingleNode
的结果可能为空

将该行更改为两行,将更容易在调试器中看到问题:

Dim node = xmlDoc.SelectSingleNode(dummy)
node.InnerText = newValue

您可能想向我们展示更多的代码。如果它给出null异常,则“newValue”在分配给innertext时肯定为null。@loxxy,
newValue
在该行上没有被取消引用。这不可能是NRE的原因。@kirk,这个问题已经用更多信息编辑过了。前面的取消引用不明显。您可能希望向我们展示更多代码。如果它给出null异常,则“newValue”在分配给innertext时肯定为null。@loxxy,
newValue
在该行上没有被取消引用。这不可能是NRE的原因。@kirk,这个问题已经用更多信息编辑过了。此前,取消参照并不明显。