【问题标题】:Random "Not Found" error with Silverlight accessing ASP.NET Web ServicesSilverlight 访问 ASP.NET Web 服务时出现随机“未找到”错误
【发布时间】:2010-03-30 19:30:15
【问题描述】:

我正在使用 Silverlight 3 和 ASP.NET Web 服务开发一个应用程序,它使用 Linq to SQL 从我的 SQL Server 数据库中获取数据。

当用户触发操作以从我的任何 Web 服务方法获取信息时,Silverlight 会随机抛出异常“远程服务器返回错误:NotFound。”,类型为“CommunicationException”,InnerException 状态为“System .Net.WebExceptionStatus.UnknownError"。

几乎 10% 的请求会出现此错误。如果用户再次尝试获取相同的信息,通常请求没有错误并且用户获取数据。

当在 Visual Studio 中调试时,只有 Silverlight 会因异常而停止,我看不出找不到 Web 服务的原因。

【问题讨论】:

  • 我建议您尝试描述导致错误的请求。或许可以用 Fiddler 之类的来观察网络流量。
  • 当 Web 服务客户端对象被重新实例化(通过控件重新加载或其他方式)时,我已经看到过这种情况;这可能是我的应用程序中的一个巧合,但经过重构以确保不会发生这种情况后,这似乎解决了问题。

标签: silverlight web-services silverlight-3.0 asmx


【解决方案1】:

您看到的问题是因为每当发生任何异常时,Web 服务都不会向 silverlight 客户端返回有关异常的任何详细信息。它只是返回 404 未找到状态作为结果,因此您总是会得到“未找到”异常。

您可以尝试做的是确保您的 Web 服务即使在出现异常的情况下也返回 200(有效结果),并以某种方式将错误消息与对象一起返回。

示例:

public class WebServiceResult

{

   //your object's properties go here


   //extra properties to check if exception has occured

   public string ErrorMessage {get; set;}

   public bool IsError {get; set;}
}

使用 Fiddler 尝试更好地理解我在说什么。如果出现每个异常,您都会看到 404 错误。

【讨论】:

    【解决方案2】:

    如果您碰巧使用 WCF Web 服务,您可以尝试在 web.config 文件中打开 WCF 跟踪:

    <configuration>
       <system.diagnostics>
          <sources>
                <source name="System.ServiceModel"
                        switchValue="Information, ActivityTracing"
                        propagateActivity="true">
                <listeners>
                   <add name="traceListener"
                       type="System.Diagnostics.XmlWriterTraceListener"
                       initializeData= "c:\CodePlex.Diagnostics\CodePlex.Diagnostics.Services.Web.svclog" />
                </listeners>
             </source>
          </sources>
       </system.diagnostics>
    </configuration>
    

    有关上下文和详细信息:READ ME!

    【讨论】:

      【解决方案3】:

      据我所知,WebClient 将所有错误都视为“404”。如果您可以将代码切换为使用 HttpClient,您将得到更详细的错误。如果该代码被隐藏(或生成),那么 Fiddler 将是您的最佳选择。

      【讨论】:

        猜你喜欢
        • 2018-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-24
        • 1970-01-01
        • 2014-07-18
        相关资源
        最近更新 更多