我在带有 ASP.NET 网站的测试服务器上遇到了一些问题。我傻了,有了家 默认网站的目录指向了错误的位置。当我尝试时:
ConfigurationManager.ConnectionStrings["connectionString"];
它返回了 null,但是
using System.Web.Configuration;
/* ... */
var rootWebConfig =
WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
rootWebConfig.ConnectionStrings.ConnectionStrings["connectionString"].ConnectionString;`
返回了正确的连接字符串。
这两种方法之间的区别是什么?
编辑:我真正想问的是,为什么当主目录设置不正确时 ConfigurationManager 方法会失败,但在其他情况下会成功,而 WebConfigurationManager 无论如何都会成功主目录设置是否正确?是否存在任何其他差异,例如关于访问控制的假设?
最佳答案
在 ConfigurationManager 语句所在的位置放置一个断点,然后在“立即输出”窗口中运行以下命令
((ConfigurationSection) ConfigurationManager.GetSection("connectionStrings")).ElementInformation
.我的机器报告来源:“C:\Users\John\Documents\Visual Studio 2008\Projects\StackOverflowCode\WebApplication1\web.config”如下所示。
注意:下面也显示我正在访问ASP.NET web.config。
{System.Configuration.ElementInformation}
Errors: {System.Configuration.ConfigurationException[0]}
IsCollection: true
IsLocked: false
IsPresent: true
LineNumber: 17
Properties: {System.Configuration.PropertyInformationCollection}
Source: "C:\\Users\\John\\Documents\\Visual Studio 2008\\Projects\\StackOverflowCode\\WebApplication1\\web.config"
Type: {Name = "ConnectionStringsSection" FullName = "System.Configuration.ConnectionStringsSection"}
Validator: {System.Configuration.DefaultValidator}
当我运行 ConfigurationManager.ConnectionStrings.ElementInformation 时,我得到了 Source:null 这对我来说是正确的网络应用。
配置源路径有什么意义???
ConfigurationManager.ConnectionStrings["connectionString"]; 可能会查找不一定与 Web 应用程序的根 web.config 相同的配置位置。可能它正在 Windows 目录中查找(例如,在不同的地方或 machine.config)。不过,正在尝试为此找到合适的测试。
System.Configuration.ConfigurationManager可以访问 .NET 配置 XML 格式,这意味着它可以读取:
并表达了配置类型共有的那些方面。这是一个通用的配置管理器。 (尽管可以查看两种类型的配置,但您应该将其用于应用程序配置,因为网络管理器专用于网络配置,如下所述...)
System.Web.Configuration.WebConfigurationManager做几乎相同的事情,但它是配置管理器的“网络化”版本,提供对配置的 ASP.NET 特定方面的访问(例如 ASP.NET 中的 web.config 文件)。
查看 ConfigurationManager.* 之间的成员相似性和 WebConfigurationManager.*
例如,两个管理器都可以访问 AppSettings 属性和 ConnectionStrings 属性。事实上,这两种设置对于两种配置都是通用的,甚至位于 XML 文档中的同一级别。
但是有很多相似之处,
访问配置: ConfigurationManager 具有相对于 EXEC 应用程序打开独立应用程序配置(即 Myprogram.EXE 的 App.config)的方法,而 WebConfigurationManager 具有相对于网站中的 Web 应用程序根目录打开 ASP.NET Web 配置的方法。
这是一个基本的 app.config(例如,通过 ConfigurationManager 从磁盘文件夹中的“C:\winapp\app.config”打开)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings/>
<connectionStrings/>
</configuration>
这是一个基本的web.config(例如,通过“~”打开,意思是 WebConfigurationManager 的网站根目录)
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<!-- special web settings -->
</system.web>
</configuration>
注意相似之处。另请注意,Web 配置具有用于 ASP.NET 的附加 system.web 元素。
这些管理器位于不同的组件中。
关于c# - System.Web.Configuration.WebConfigurationManager 和 System.Configuration.ConfigurationManager 之间的行为差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2060993/
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden
在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee
我正在检查一个Rails项目。在ERubyHTML模板页面上,我看到了这样几行:我不明白为什么不这样写:在这种情况下,||=和ifnil?有什么区别? 最佳答案 在这种特殊情况下没有区别,但可能是出于习惯。每当我看到nil?被使用时,它几乎总是使用不当。在Ruby中,很少有东西在逻辑上是假的,只有文字false和nil是。这意味着像if(!x.nil?)这样的代码几乎总是更好地表示为if(x)除非期望x可能是文字false。我会将其切换为||=false,因为它具有相同的结果,但这在很大程度上取决于偏好。唯一的缺点是赋值会在每次运行
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
📢博客主页:https://blog.csdn.net/weixin_43197380📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!📢本文由Loewen丶原创,首发于CSDN,转载注明出处🙉📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.分辨率(Resolution)1、工业相机的分辨率是如何定义的?2、工业相机的分辨率是如何选择的?二.精度(Accuracy)1、像素精度(PixelAccuracy)2、定位精度和重复定位精度(RepeatPrecision)三.公差(Tolerance)四.课后作业(Post-ClassExercises)视觉行业的初学者,甚至是做了1~2年
两个gsub产生不同的结果。谁能解释一下为什么?代码也可在https://gist.github.com/franklsf95/6c0f8938f28706b5644d获得.ver=9999str="\tCFBundleDevelopmentRegion\n\ten\n\tCFBundleVersion\n\t0.1.190\n\tAppID\n\t000000000000000"putsstr.gsub/(CFBundleVersion\n\t.*\.).*()/,"#{$1}#{ver}#{$2}"puts'--------'putsstr.gsub/(CFBundleVersio
我在一段非常简单的代码(如我所想)中得到了一个错误的值:org=4caseorgwhenorg=4val='H'endputsval=>nil请不要生气,我希望我错过了一些非常明显的东西,但我真的想不通。谢谢。 最佳答案 这是典型的Ruby错误。case有两种被调用的方法,一种是你传递一个东西作为分支的基础,另一种是你不传递的东西。如果您确实在case中指定了一个表达式语句然后评估所有其他条件并与===进行比较.在这种情况下org评估为false和org===false显然不是真的。所有其他情况也是如此,它们要么是真的,要么是假的。