NullReference对非null的值

kin*_*005 0 xml vb.net asp.net

我有一个函数,它传递一个字符串传递给它.在测试函数时,我在传递给它的字符串参数上得到一个空引用异常,即使该字符串不为null,我也不明白为什么我会收到此错误.我在下面有一个屏幕截图

替代文字

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

UPDATE

很抱歉没有发布代码

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
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的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>
Run Code Online (Sandbox Code Playgroud)

是的,SlectSingleNode函数没有返回值.我刚刚开始使用XPath,这似乎在我上周使用时起作用.我不确定它为什么现在停止工作了.

UPDATE2:

知道了,愚蠢的错误.我在Node方法中将nodeToMod作为"UserName"而不是"Username"传递

        Set(ByVal value As String)
            setValue("UserName", value.ToString)
            _userName = value
        End Set
Run Code Online (Sandbox Code Playgroud)

Aak*_*shM 5

被抱怨的空引用是调用的结果SelectSingleNode.也就是说,当通过连接形成的xpath /Config/nodeToMod文档的内容进行评估时,没有节点匹配.所以你得到null,并尝试设置InnerTextnull给出异常.

我们真的需要看到nodeToMod和xml文件本身进一步帮助.另外,请发布代码而不是截图!