【问题标题】:In .NET, What is the Runtime Equivalent of my app.config Setting?在 .NET 中,我的 app.config 设置的运行时等效项是什么?
【发布时间】:2008-11-18 17:56:03
【问题描述】:

如果我的 app.config 文件中有以下设置。这是我需要确保我的 WCF 客户端可以协商默认代理服务器的设置。

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
</system.net>

很遗憾,我无法在我的环境中添加 app.config 文件。如何通过在运行时设置来确保这些设置?

【问题讨论】:

    标签: .net wcf proxy


    【解决方案1】:

    我认为你要做的是创建一个System.Net.WebProxy 对象,然后设置适当的变量,然后设置System.Net.WebRequest.DefaultWebProxy

    System.Net.WebProxy proxy = new WebProxy();
    proxy.UseDefaultCredentials = true;
    WebRequest.DefaultWebProxy = proxy;
    

    这篇文章有点谈论整个事情:Link

    希望有帮助!

    【讨论】:

    • 这不是 WCF 解决方案,是吗?如何使用默认凭据创建 WCF 客户端代理?
    • 这解决了我的问题。现在,我得到:“TCP 错误代码 10061:无法建立连接,因为目标机器主动拒绝了它”。不幸的是,这项服务没有任何问题。
    【解决方案2】:

    在项目的属性页面上应该有一个设置选项卡。您放在那里的任何内容实际上都存在于项目的 *.settings 文件中,但也会在部署时自动包含在 app.config 文件中。你可以在那里进行更改吗?

    【讨论】:

    • 不,我是一个可重用的 DLL。我不会使用 app.config。
    【解决方案3】:

    我想您正在使用从 WSHttpBindingBase 继承的绑定。如果是这样,您也可以尝试在代码中设置“UseDefaultWebProxy”属性。像这样的:

    myWSHttpBinding.UseDefaultWebProxy = True;
    

    编辑: BasicHttpBinding 也具有相同的属性。

    【讨论】:

    • 不,这样不行。它转到正确的代理,但不使用默认凭据。因 407 身份验证失败而失败
    【解决方案4】:

    无论您的可执行程序(不是库 dll)程序集的定义名称是什么,请在末尾添加一个“.config”...

    所以如果你的可执行文件是

    AcmeWidgets.EastCoast.MyApplicationName.exe

    然后 app.config 将被重命名为

    AcmeWidgets.EastCoast.MyApplicationName.exe.config

    但是,我不建议您尝试在运行时动态更改这些设置(在磁盘上的配置文件中)...

    相反,您能否对您的应用程序进行编码,以便它从这些配置设置中填充和使用静态变量...然后实现动态“更改值”功能,以便更改这些静态变量...

    这样你仍然可以动态“影响”运行时行为,但避免了写入配置文件的麻烦,并且运维管理可以通过编辑来管理配置文件中的“默认”值......

    【讨论】:

    • 我无权访问 .exe。我是一个可重用的 DLL。 DLL 托管在浏览器中。我无权访问 app.config 文件。
    • Dll 没有配置文件...配置文件是每个操作系统进程一个...每个可执行文件只有一个进程。每个使用您的 dll 的应用程序都有自己的配置文件,但名称不同。
    • 您可以为此使用应用程序设置功能吗? (它在 dll 的项目属性屏幕,设置选项卡中)
    猜你喜欢
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 2023-03-19
    相关资源
    最近更新 更多