【问题标题】:Error creating Web proxy创建 Web 代理时出错
【发布时间】:2010-11-12 16:56:45
【问题描述】:

我有一个启用 CLR 的 .NET 应用程序,它可以访问 Web 服务并将 xml 文件写入 Web 服务器以供 SQLServer SSIS 包消化。在开发服务器上一切正常,但生产服务器返回以下错误:

创建指定的 Web 代理时出错 在“system.net/defaultProxy”中 配置部分:在 System.Net.Configuration.DefaultProxySectionInternal.GetSection() 在 System.Net.WebRequest.get_InternalDefaultWebProxy() 在 System.Net.HttpWebRequest..ctor(Uri uri,ServicePoint 服务点)在 System.Net.HttpRequestCreator.Create(Uri 乌里)在 System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) 在 System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri) 在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri) 在 System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri) 在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串 方法名,对象 [] 参数)在 MyDBProj.com.dmsintegration.secure.VehicleInventoryService.RetriveVehicleInventory(RetrieveAllRecordsRequest 请求)在 UserDefinedFunctions.LoadDMSFile(字符串 经销商 ID,字符串 dms_username,字符串 dms_password,字符串 dms_location_id)

服务器操作系统版本或 SQLServer 版本之间没有区别。我们使用的是 Windows Server 2003 R2 和 SQL Server 2005。我相信它一定是服务器本身的配置,但我找不到服务器之间的任何差异。两台服务器都没有运行软件防火墙。

完全例外:

System.Configuration.ConfigurationErrorsException: 创建指定的 Web 代理时出错 在“system.net/defaultProxy”中 配置部分。 ---> System.DllNotFoundException:无法加载 DLL 'rasapi32.dll':A 动态链接库 (DLL) 初始化例程失败。 (HRESULT 异常:0x8007045A)
在 System.Net.UnsafeNclNativeMethods.RasHelper.RasEnumConnections(RASCONN[] lprasconn, UInt32& lpcb, UInt32& lpcConnections)在 System.Net.UnsafeNclNativeMethods.RasHelper.GetCurrentConnectoid() 在 System.Net.AutoWebProxyScriptEngine.AutoDetector.Initialize() 在 System.Net.AutoWebProxyScriptEngine..ctor(WebProxy 代理,布尔值 useRegistry) 在 System.Net.WebProxy.UnsafeUpdateFromRegistry() 在 System.Net.Configuration.DefaultProxySectionInternal..ctor(DefaultProxySection 部分)在 System.Net.Configuration.DefaultProxySectionInternal.GetSection() --- 内部异常堆栈跟踪结束 --- 在 System.Net.Configuration.DefaultProxySectionInternal.GetSection() 在 System.Net.WebRequest.get_InternalDefaultWebProxy() 在 System.Net.HttpWebRequest..ctor(Uri uri,ServicePoint 服务点)在 System.Net.HttpRequestCreator.Create(Uri 乌里)在 System.Net.WebRequest.Create(Uri requestUri, Boolean useUriBase) 在 System.Web.Services.Protocols.WebClientProtocol.GetWebRequest(Uri uri) 在 System.Web.Services.Protocols.HttpWebClientProtocol.GetWebRequest(Uri uri) 在 System.Web.Services.Protocols.SoapHttpClientProtocol.GetWebRequest(Uri uri) 在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(字符串 方法名,对象 [] 参数)在 MyDBProj.com.dmsintegration.secure.VehicleInventoryService.RetriveVehicleInventory(RetrieveAllRecordsRequest 请求)在 UserDefinedFunctions.LoadDMSFile(字符串 经销商 ID,字符串 dms_username,字符串 dms_password,字符串 dms_location_id)

【问题讨论】:

  • 什么是启用 CLR 的 .NET 应用程序?在 .NET 1.0 beta 1 之前,我一直在使用 .NET,但我想我从未听说过。
  • 这只是一个 C# 程序集,已加载到 SQL Server 中,供服务器上的函数和存储过程使用。

标签: .net clr webproxy


【解决方案1】:

詹姆斯,仔细看:

创建 Web 代理时出错在“system.net/defaultProxy”配置部分中指定

【讨论】:

  • 是的...所有服务器在 web.config 中都有相同的配置。 所有服务器上有关网络代理的互联网连接设置都是相同的。我试图弄清楚为什么当所有这些配置都相同时,错误只发生在一台服务器上。
  • 在所有机器上的 'system.net/defaultProxy' 部分中指定了什么?
  • 您是否考虑过 machine.config 和基础 web.config,以及层次结构中的所有 web.config?这些站点是否都位于所有计算机上的相同虚拟位置?
  • 我在评论中发布的 sn-p 正是配置文件中的内容。 仅出现在每台服务器上的基本 web.config 文件中。在每种情况下,clr 程序集都以相同的权限加载到 SQL 服务器。
  • 我想我一开始没有看到您评论中的代码。您应该使用该信息更新您的问题。建议:您可以选择一个代理并明确设置它吗? “usesystemdefault”意味着它在每个系统上可能不同,你必须找出原因。另外,这是整个例外吗? ex.ToString() 的输出?我很想知道是否有 InnerException。
【解决方案2】:

从 .Net Winform 应用程序调用 Web 服务时,我们得到了完全相同的错误消息。

在我们的例子中,错误发生在一个用户身上,但同一服务器上的另一个用户(具有本地管理员权限)却没有。

实际上它与 WCF 无关;从您的应用程序调用一个简单的网页时,您会遇到同样的错误。不允许执行的用户帐户打开 Web 代理连接。

我们通过将应用程序移至 C:\Program Files 解决了该问题。由于某种原因我还不能准确解释,同一用户可以从这个文件夹中创建代理。

欢迎对此提出任何见解。

【讨论】:

  • 我遇到了同样的问题,这实际上对我有用。我必须直接在 Program Files 文件夹中运行应用程序。这让我发现了真正的问题。由于某种原因,该应用程序默认安装为在 Windows 2000 的兼容模式下运行。一旦我取消选中(右键单击->属性->兼容性),它就能够连接到该服务。
  • 这里一样,从网络文件系统运行,无法发出简单的 HTTP 请求。
【解决方案3】:

我在尝试从 WinDBG 访问源服务器时发生此错误。我在 srcsrv.ini 文件中的 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ 文件夹中引用了 TF.EXE。

我复制了一个 tf.exe / tf.exe.config 并将它放在 WinDBG 的文件夹中,它工作正常。

原来早先从 Microsoft Symbol Store 下载的符号已将文件夹 winhttp.dll 等放在 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE 文件夹中,并且正在读取这些文件夹。这使得 tf.exe 无法找到并加载这些 dll。应该发生的是 tf.exe 在那里没有找到它们,而是从c:\Windows\Syswow64 文件夹中加载它们。

来自 SysInternals 的进程监视器是您的朋友!

【讨论】:

    【解决方案4】:

    我们也遇到过同样的问题。 创建“system.net/defaultProxy”配置部分中指定的 Web 代理时出错。

    我通过更正网站配置文件中的错误条目来解决此问题。请确保所有标签均已正确打开和关闭。它可能会解决您的问题。

    【讨论】:

      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多