通过MSMQ调用WCF不稳定

时间:2012-02-16 05:34:17

标签: asp.net wcf msmq

代码是微不足道的,而不是解释,这里是相关部分:

protected void Page_Load(object sender, EventArgs e)
{
  if ((Request.HttpMethod == "POST") && (Request.ContentType == "text/xml"))
  {
    string filename = string.Format("{0:yyyyMMddHHmmss}.xml", DateTime.UtcNow);
    var path = Path.Combine(Request.MapPath("Chapters"), Request.Headers["X-MAC"]);
    Directory.CreateDirectory(path);
    string xml;
    using (ChapterWriterClient client = new ChapterWriterClient())
    using (StreamReader sr = new StreamReader(Request.InputStream))
    {
      xml = sr.ReadToEnd();
      client.Write(xml);
      System.Diagnostics.Trace.TraceInformation(xml);
    }
    Request.SaveAs(Path.Combine(path, filename), false);
  }

还有更多,但其余部分按预期工作。

问题在于:呼叫{​​{1}}是否成功是不稳定​​的。

一些已知的事实:

  • 没有错误报告给调试器或事件日志
  • 有时XML会将其放入消息队列中,有时它不会
  • client.Write(string xml)调用始终成功,生成的文件始终包含预期的XML。这有几个重要的含义:
    • 正在执行对WCF的调用。
    • 因为字符串Request.SaveAs(string filepath, bool includeHeaders)在失败的WCF调用之后立即具有期望值,并且仅在WCF调用之前发生对此变量的赋值,所以它在调用时必须具有正确的值。 / LI>

邮件大小存在一些差异,因此我在这方面检查服务配置,但过去的经验告诉我,当有效负载过大时会发生异常抛出。

任何线索都会受到赞赏。

此外,您可能会看到练习的重点是尝试使用HTTP POST将某些XML放入MSMQ上的消息中。我会非常高兴,不要那样做,就像这样做你无知的野蛮人"输入答案。

0 个答案:

没有答案