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

Exception 从网络共享运行NET4.0应用程序时,在app.config中指定defaultProxy时出现异常,exception,.net-4.0,app-config,network-share,defaultproxy,Exception,.net 4.0,App Config,Network Share,Defaultproxy,在NET4.0下从网络共享运行以下应用程序时,我们看到了一个非常奇怪的问题。在app.config中指定defaultProxy节时,将抛出System.Net.WebException。从本地驱动器运行时没有问题 根据文档,应用程序将作为来自网络共享的完全信任程序集运行,因此我们假设这应该可以正常工作 有没有办法解决这个问题 有没有其他人经历过这个问题,或者有人知道为什么会发生这种情况 示例程序 app.config 请参阅Microsoft知识库文章: 症状: 您运行存储在网络共享上的基于

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

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

有没有办法解决这个问题

有没有其他人经历过这个问题,或者有人知道为什么会发生这种情况

示例程序 app.config 请参阅Microsoft知识库文章:

症状:

  • 您运行存储在网络共享上的基于Microsoft.NET Framework 4的应用程序
  • 应用程序调用System.Configuration.ConfigurationManager类中的静态方法。例如,应用程序调用ConfigurationManager.GetSection方法
在这个场景中,抛出一个System.Security.SecurityException异常,然后应用程序崩溃

原因:

出现此问题的原因是该方法无法从网络共享上的应用程序访问配置部分


您可以从该站点请求修补程序。

我们看到了类似的症状-相同的错误消息

权限不足,无法设置配置节“defaultProxy”

当运行文件被“阻止”的控制台应用程序时

这些文件是通过从超链接下载zip文件安装的,解压前zip文件没有“解锁”


从“资源管理器”>“右键单击”>“属性”>“取消阻止”取消阻止所有文件(必须在Windows中单独执行)解决了此问题

令人烦恼的是,这个修补程序似乎不再可用,但问题仍然存在……我相信这个修补程序仍然可用。MS为修补程序发送的电子邮件中的下载链接错误地包含一个拖尾结束括号。删除后,下载工作正常。删除右括号时可以下载,但不会解压缩。它一直在要求第二张磁盘。有人知道微软是否已经修补了这张磁盘,或者我们是否必须要求我们的客户安装来自微软的修补程序?仅供谷歌参考:法语错误消息的内容类似于“Autorisations insuffications pour la définition de la section de configuration‘defaultProxy’”为我工作。谢谢你,罗瑞。我不知道这两个问题是否相关。只是为了谷歌参考:德国的错误信息读起来类似于“Ungenügende Berechtigungen zum Festlegen des KonfigulationsBSchnitts”defaultProxy“。为我工作过,但我可以做“解锁”“仅从配置文件的属性,我的问题是我从应用程序代码以外的其他地方传输了配置文件。我的解决方案是,配置文件->右键单击->属性->取消阻止
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);
            }
        }
    }
}
  <?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>
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 the permission of type 'System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark)
   at System.Security.CodeAccessPermission.Demand()
   at System.Net.Configuration.DefaultProxySection.PostDeserialize()
   --- End of inner exception stack trace ---
   at System.Configuration.BaseConfigurationRecord.EvaluateOne(String[] keys, SectionInput input, Boolean isTrusted, FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult)
   at System.Configuration.BaseConfigurationRecord.Evaluate(FactoryRecord factoryRecord, SectionRecord sectionRecord, Object parentResult, Boolean getLkg, Boolean getRuntimeObject, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey, Boolean getLkg, Boolean checkPermission)
   at System.Configuration.BaseConfigurationRecord.GetSection(String configKey)
   at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName)
   at System.Configuration.ConfigurationManager.GetSection(String sectionName)
   at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName)
   at System.Net.Configuration.DefaultProxySectionInternal.GetSection()
   at System.Net.WebRequest.get_InternalDefaultWebProxy()
   at System.Net.HttpWebRequest..ctor(Uri uri, ServicePoint servicePoint)
   at System.Net.HttpRequestCreator.Create(Uri Uri)
   at System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase)
   at System.Net.WebRequest.Create(Uri requestUri)
   at System.Net.WebClient.GetWebRequest(Uri address)
   at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
   --- End of inner exception stack trace ---
   at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
   at System.Net.WebClient.DownloadString(Uri address)
   at System.Net.WebClient.DownloadString(String address)
   at ProxyTest.Program.Main(String[] args) in Y:\Program.cs:line 12