如何覆盖ClientHttpwebRequest.Failed()?

时间:2013-05-20 12:45:43

标签: c# .net windows-phone-7

我有一个Windows Phone应用程序,我在7.1 Emulator中运行。我有这段代码:

 WebRequest resuest = ///
 using (HttpWebResponse result = (HttpWebResponse)request.GetResponse())
 {

一旦控件进入GetResponse(),我首先得到FileNotFound第一次机会异常

  

找不到文件或程序集名称'System.Windows.debug.resources,Version = 2.0.5.0,Culture = en-US,PublicKeyToken = 7cec85d7bea7798e'或其中一个依赖项。

使用以下调用堆栈

mscorlib.dll!System.ThrowHelper.throwVersion37CompatException(System.ExceptionType newEType, string newString, System.ExceptionType oldEType, string oldString) + 0x19 bytes    
mscorlib.dll!System.Reflection.Assembly.Load(string assemblyString) + 0x5d bytes    
System.Windows.dll!System.Windows.Resx.Resx() + 0x29 bytes  
System.Windows.dll!System.Windows.Resx.GetLoader() + 0x1f bytes 
System.Windows.dll!System.Windows.Resx.GetString(string name, out bool fallbackUsed, object[] args) 
System.Windows.dll!System.Windows.Resx.GetString(string name, object[] args)    
System.Windows.dll!System.Net.Browser.ClientHttpWebRequest.Failed(object sender, System.EventArgs e) + 0xf8 bytes   
System.Windows.dll!MS.Internal.InternalWebRequest.OnDownloadFailed(object sender, MS.Internal.ErrorEventArgs args) + 0x15 bytes 
System.Windows.dll!MS.Internal.CoreInvokeHandler.InvokeEventHandler(int typeIndex, System.Delegate handlerDelegate, object sender, object args) + 0x3f4 bytes   
System.Windows.dll!MS.Internal.JoltHelper.FireEvent(System.IntPtr unmanagedObj, System.IntPtr unmanagedObjArgs, int argsTypeIndex, int actualArgsTypeIndex, string eventName) + 0x178 bytes 
[External Code]

当我点击“继续”时,我得到了未处理的WebException

  

远程服务器返回错误:NotFound。

第一件事看起来像a well-known problem的变体。现在因为这个问题,我的程序就行不通了。我已经读过,这可能会以某种方式连接到Fiddler,所以我尝试使用和不使用Fiddler,但行为始终是相同的。当Fiddler运行时,我看不到请求离开我的机器,尽管请求发送的URL是外部网络上服务器的URL。

调用堆栈显示有一些问题导致ClientHttpWebRequest.Failed()被调用,然后后者无法工作。所以也许我可以覆盖它并以某种方式绕过有问题的代码Resx.GetString()

我是否可以覆盖ClientHttpWebRequest.Failed()或绕过有问题的代码?

1 个答案:

答案 0 :(得分:0)

不是最初问题的答案,但我似乎解决了这个问题。

这笔交易是我支持企业Forefront TMG,我在我的计算机上运行Forefront TMG Client,以便所有程序都可以将他们的请求传递到Internet。 TMG服务器名为tmgserver

所以我打开“Internet选项”(可从Internet Explorer访问),在“连接”选项卡上有“局域网设置”按钮,当我点击它时,我看到有一个复选框“为您的局域网使用代理服务器”和服务器名称为tmgserver,端口号为8080.现在,我只需清除该复选框,然后单击“应用”必要的次数,问题就解决了。