我正在尝试做与上一个问题相同的事情.从本质上讲,就是这种情况(这与我的情况完全相同):
我的计划是将这些(appSettings)放在他们自己的文件(Settings.config)中,我将向其提供对Web进程用户帐户的修改权限,并将所有可编辑设置存储在此文件中(例如论坛标题,说明等) .
问题是该问题中接受的解决方案对我不起作用,因为在我发出config.Save(ConfigurationSaveMode.Minimal, false)命令时,它不是将appSettings保存在单独的.config文件中,而是将单独文件的所有appSettings复制到appSettings部分.主web.config文件(带有新的更改).这是我的最终代码(在vb.net中):
Public Shared Function GetAppSetting(ByVal setting As String) As String
Dim config As System.Configuration.Configuration = _
WebConfigurationManager.OpenWebConfiguration("~")
Return config.AppSettings.Settings(setting).Value
End Function
Public Shared Sub SetAppSetting(ByVal setting As String, ByVal value As String)
Dim config As System.Configuration.Configuration = _
WebConfigurationManager.OpenWebConfiguration("~")
config.AppSettings.Settings(setting).Value = value
config.Save(ConfigurationSaveMode.Minimal, False)
ConfigurationManager.RefreshSection("appSettings")
End Sub
Run Code Online (Sandbox Code Playgroud)
基本上我无法看到我在哪里表示我希望将设置保存在单独的文件而不是web.config上,默认情况下它们存储在web.config中.哦,顺便说一句,我必须在web.config的appSettings部分添加'file ='属性,以便实际考虑Settings.config appSettings.如果没有该属性,上面的代码不会读取单独的.config文件设置.这是我的web.config appSettings部分的快照:
<appSettings file="Settings.config">
<add key="RestartApp" value="-1" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
这是我的Settings.config文件的全部内容:
<appSettings>
<add key="AppTitle" value="MVC Web Access" /> …Run Code Online (Sandbox Code Playgroud) 我希望以下vb.net函数返回一个值Nothing,但它返回一个值为0...
Public Shared Function GetDefaultTipoSrvTkt() As Integer?
Dim tsrvDict As New Dictionary(Of Integer, DataRow)
GetDefaultTipoSrvTkt = If(IsNothing(tsrvDict) OrElse tsrvDict.Count = 0, Nothing, tsrvDict.First.Key)
End Function
Run Code Online (Sandbox Code Playgroud)
该函数的最后一行也可以写成Return If(IsNothing(tsrvDict) OrElse tsrvDict.Count = 0, Nothing, tsrvDict.First.Key)但无论如何,为什么IF()函数If(IsNothing(tsrvDict) OrElse tsrvDict.Count = 0, Nothing, tsrvDict.First.Key)返回0而不是Nothing?