标签: defaultproxy

从网络共享运行NET4.0应用程序时在app.config中指定defaultProxy时出现异常

从NET4.0下的网络共享运行以下应用程序时,我们看到一个非常奇怪的问题.当指定一个defaultProxy在部分的app.config一个System.Net.WebException被抛出.从本地驱动器运行时没有问题.

根据文档,应用程序将作为来自网络共享的完全信任程序集运行,因此我们假设这应该可以正常工作.

有什么想法我们如何解决这个问题?

有没有其他人遇到过这个问题,或者有人知道为什么会这样吗?

示例程序

using System;
using System.Net;

namespace ProxyTest
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                String s = new WebClient().DownloadString("http://www.google.com");
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

的app.config

  <?xml version="1.0"?>
  <configuration>
    <system.net>
      <defaultProxy useDefaultCredentials="true"/>
    </system.net>
    <startup>
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    </startup>
  </configuration>
Run Code Online (Sandbox Code Playgroud)

例外细节

System.Net.WebException: An exception occurred during a WebClient request. ---> System.Configuration.ConfigurationErrorsException: Insufficient permissions for setting the configuration section 'defaultProxy'. ---> System.Security.SecurityException: Request for …
Run Code Online (Sandbox Code Playgroud)

app-config exception network-share .net-4.0 defaultproxy

10
推荐指数
2
解决办法
1万
查看次数

使用“默认代理”时,用户名/密码来自哪里?

“WebClient”类(还有 ClickOnce)可以使用默认代理设置(例如放入 application.config 中),但是:

\n\n
    \n
  1. 用户名/密码从哪里来?(我看不到 XML 配置中的设置 - 见下文)。
  2. \n
  3. 应用程序是否可以配置为手动提示用户输入用户名/密码
  4. \n
\n\n

http://msdn.microsoft.com/en-us/library/kd3cf2ex.aspx

\n\n
<defaultProxy\nenabled="true|false"\nuseDefaultCredentials="true|false"\n<bypasslist> \xe2\x80\xa6 </bypasslist>\n<proxy> \xe2\x80\xa6 </proxy>\n<module> \xe2\x80\xa6 </module>\n/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

附言。 我刚刚使用以下设置进行了测试,并确认用户名/密码并非来自成功登录的 IE 会话。

\n\n

因此,悬而未决的问题是用户名/密码从哪里来?或者是否必须在自定义应用程序中以编程方式提供,在这种情况下 ClickOnce 会发生什么?(这似乎没有启动任何对话框来允许用户提供用户名/密码)

\n\n
<?xml version="1.0" encoding="utf-8" ?>\n<configuration>\n    <system.net>\n      <defaultProxy enabled="true" useDefaultCredentials="false">\n        <bypasslist>\n          <add address="localhost" />\n        </bypasslist>\n        <proxy usesystemdefault="True" proxyaddress="http://proxy1.health.qld.gov.au:80/" bypassonlocal="False" />\n      </defaultProxy>\n    </system.net>\n</configuration>\n\n\n\nprivate void button2_Click(object sender, EventArgs e)\n{\n    Cursor.Current = Cursors.WaitCursor;\n    try\n    {\n        var wc = new WebClient();\n        var str = wc.DownloadString(textBox1.Text);\n        MessageBox.Show("String = " + str);\n    } \n …
Run Code Online (Sandbox Code Playgroud)

.net proxy defaultproxy defaultnetworkcredentials winforms

5
推荐指数
1
解决办法
7647
查看次数