我正在创建一个 Web 应用程序,它调用一个 DLL 来运行单元测试,我还有另一个 DLL(DataAccessLayer),它执行连接并执行对引用主 DLL 的 SQL 的查询。这两个 DLL 使用相同的配置文件来读取设置。
从 VS 运行应用程序时,应用程序工作正常。但是,当 Web 应用程序部署到 IIS 时,DLL 似乎无法从配置文件中读取设置。
经过一番研究,我发现我可能必须在 web.config 文件中明确定义配置元素,但是我不知道如何实现这一点。有人可以指出我正确的方向吗?
我实际上是通过以下代码使用 ConfigurationManager 检索设置:-
public string GetValue(string key)
{
var appConfig = ConfigurationManager.OpenExeConfiguration("path to dll");
strKeyValue = appConfig.AppSettings.Settings[key].Value;
return strKeyValue;
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
我在@ config ['allowed_uri_chars']中添加了@的问题,如下所示:
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_@\-';
Run Code Online (Sandbox Code Playgroud)
但这里是我的网址
http://mydomain.com/awarenessroom/facebook_image_share/aHR0cDovL2Rldi5lanVpY3lzb2x1dGlvbnMuY29tL3Jla2xhaW1wYWtpc3Rhbi5jb20vdXBsb2Fkcy9hd2FyZW5lc3Nfcm9vbS9pbWFnZXMvOTEwNzA4ODI3VG9yIERheSBaYW5qZWVyLmpwZw==
和它说:"您提交的URI已经不允许的字符",即使我添加=在配置,仍然没有工作.任何人都可以让我知道配置中的CI究竟需要什么才能解析URI工作?
我正在创建一个模块(我的第一个模块,没有教程)并且收到了错误
'无法检索实体配置'
在环顾各种网站并尝试不同的选择后,我停下来了.我假设完整的消息:
Error in file: "/Users/myname/Sites/magentotest/app/code/local/Ps/Pref/sql/pref_setup/mysql4-install-0.1.0.php" - Can't retrieve entity config: pref/prefNewsSignUp
Run Code Online (Sandbox Code Playgroud)
问题出在我的config.xml上,我需要在某个地方添加一个实体节点,其中包含与mysql4有关的内容.....但我需要添加的内容以及我需要放在该节点中的内容仍然是一个谜我此刻 我的配置文件是
<global>
<model>
<pref>
<class>Ps_Pref_Models</class>
</pref>
</model>
<resources>
<pref_setup>
<setup>
<module>Ps_Pref</module>
<class>Ps_Pref_Models_Resource_Setup</class>
</setup>
</pref_setup>
</resources>
</global>
Run Code Online (Sandbox Code Playgroud)
============================== 编辑 =================== =============
我现在回到教程阶段,试着去理解我哪里出错了.这个Alan Storm教程 看起来非常类似于我的目标,但我仍然遇到了"无法检索实体配置"的相同问题(我已经完成了所有我的配置和var_dumped在IndexController中的各种选项,但是无法获得传递了这个问题,这对我没有任何意义)我留下了一些我认为有用的var_dump以及它们返回的内容(我希望这个编辑不会太混乱)
文件结构
+诗
- + Prefcentre
- +型号
--- + Mysql4
---- Preferences.php
--- Preferences.php
- +控制器
--- IndexController.php
- +等
--- config.xml中
PS/Prefcentre /型号/ Mysql4 /首选项
class Ps_Prefcentre_Model_Mysql4_Preferences
extends Mage_Core_Model_Mysql4_Abstract
{
protected function _construct()
{
$this->_init('prefcentre/preferences', 'prefcentre_id');
}
}
Run Code Online (Sandbox Code Playgroud)
PS/Prefcentre /型号/首选项
class …Run Code Online (Sandbox Code Playgroud) 我将我的 vb.net 项目创建为 .exe 文件。在另一台机器上安装期间,可以将安装包的位置更改为任何驱动器。在我的项目中,我已将app.config设置为指向c:\project 中可用的数据库。如果我想,在安装时,当我将安装位置更改为 **d:** 或任何地方时,我得到invalid access db. 我想要的是:
我想通过检测它当前的数据库位置来自动重新配置我的app.config文件。
我正在用 Java 设计一个 Web 服务,我需要在其中对 Java 中的请求进行某种 AB 测试。
基本上,我正在寻找轻松配置参数的方法,这些参数将由请求处理程序动态加载,以确定基于配置值的代码路径。
例如,假设我需要从外部 Web 服务或本地数据库获取一些数据。我想有一种方法来配置参数(此上下文中的标准),以便它确定是从外部 Web 服务还是从本地数据库获取数据。
如果我使用上面示例中的键值对配置系统,可能会产生类似的结果。
locale=us
percentage=30
browser=firefox
Run Code Online (Sandbox Code Playgroud)
这意味着我将从本地数据库中获取 30% 来自用户代理为 firefox 的美国用户的请求的数据。我希望这个配置系统是动态的,这样服务器就不需要重新启动。
对非常高级的描述感到抱歉,但任何见解/线索将不胜感激。如果这是一个过去被殴打致死的话题,请告诉我链接。
我一直在搜索和阅读很多关于如何在 PHP 环境中获取应用程序配置变量的最佳方式(代码方面)。在那之后,我总结了两种更常用的管理配置文件和变量的方法。
但我对此有点困惑,方法 1使用的是静态类。另一种方法 2是使用可实例化的类。
第一个比第二个更糟糕的单元测试。它类似于全局变量。不是吗?
第二个需要一个全局变量才能使用实例化对象。
我会试着解释自己。
事实: - 应用程序的设置保存在 INI 文件中。- 这个 INI 文件有部分,以维护配置变量。- 我只有一个 INI 文件。- 类做一些配置文件的验证。- 下面的代码示例不完整,它只是一个示例来说明我的问题。
此方法使用Config 静态类,它使用静态因为在所有应用程序中只会使用一个Config对象。
代码示例:
class Config
{
static private $data;
static public function load($configFile) {
self::$data = parse_ini_file($configFile, true, INI_SCANNER_RAW)
}
static public get($key) {
// code stuff to deal with sections and keys, but basically
return self::$data[$key];
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我使用以下代码创建了一次静态对象:
\Config::load('/where/is/my/ini/file.ini');
Run Code Online (Sandbox Code Playgroud)
在这种情况下,每次我想获得一个值时,我都会使用:
$host = \Config::get('database.host'); …Run Code Online (Sandbox Code Playgroud) 我想用 GTK+ 编写一个简单的文本编辑器,我想存储用户配置,如 font-size font-type 等......我想写这样的功能:
char *fontName = "monospace bold 12";
char *getFont(something);
void setFont(char *fontName);
Run Code Online (Sandbox Code Playgroud) 所以我希望今天的日志文件完全清除文件名中的所有日期格式,这样总能找到今天的日志文件很容易.但是,我希望在新的一天开始时,使用日期戳重命名旧的日志文件.
所以日志文件夹看起来像这样:
log.log (< - todays logfile)
log-16.02.2016.log
log-15.02.2016.log
我正在尝试为我的应用程序设置全局变量.
我看到了一些建议和自定义配置文件就是其中之一.
所以我constraints.php在config目录下创建了一个文件.
这是示例代码:
return [
'user_exist'=>1
];
Run Code Online (Sandbox Code Playgroud)
我可以使用config('constraints.user_exist')访问此值
所以我尝试了以下代码:
return [
'user_exist'=>count(\App\User::first())
];
Run Code Online (Sandbox Code Playgroud)
但它抛出以下错误: PHP致命错误: 在3308行上的project/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php中调用null上的成员函数connection()
在我的扩展中,我使用tca/override文件夹中的tablename.php文件来覆盖由另一个扩展名定义的一些内容.我知道我可以这样做:
$GLOBALS['TCA']['tablename']['columns']['anoption']['config']['minitems'] = 1;
Run Code Online (Sandbox Code Playgroud)
但是当原始文件说:
... 'anoption''config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'anoption',
['maxitems' => 7,]
Run Code Online (Sandbox Code Playgroud)
什么是覆盖语法?我在尝试这样的事情:
$GLOBALS['TCA']['tablename']['columns']['anoption']['config']['anoption']['maxitems'] = 3;
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我不知道我在配置后插入什么,因为在原始文件中有getFileTCAConfig函数.
另外我想知道如何调试"$ GLOBALS ['TCA'] ['tablename'] ['columns'] ['anoption']"以某种方式查看所有子选项,因为我在mysql数据库中找不到任何内容,我无法从phpMyAdmin读取任何配置.
我感谢所有的帮助!