从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)
<?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) “WebClient”类(还有 ClickOnce)可以使用默认代理设置(例如放入 application.config 中),但是:
\n\nhttp://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/>\nRun 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)