为什么通过Silverlight 2上传的文件仅限于.TXT文件?

时间:2008-11-17 03:17:28

标签: asp.net wcf silverlight web-services

我有一个Silverlight 2应用程序,它将一个字节数组发送到启用Silverlight的WCF服务。但是,(除非我尝试上传.txt文件)从未到达服务的SaveFile()方法,我收到错误:“远程服务器返回错误:NotFound”

我错过了一些非常明显的东西吗?为什么我不能上传.doc文件?为什么只有.txt?

更新:我已经尝试为CLR异常附加调试器,但这没有帮助。除了404之外,我仍然看不到任何错误。这是我的代码:

Page.x 在Page.xaml.cs中:

OpenFileDialog dlg = new OpenFileDialog();

if (dlg.ShowDialog().Value)
{
  byte[] fileContent = new byte[dlg.File.Length];

  using (FileStream fs = dlg.File.OpenRead())
  {
    fs.Read(fileContent, 0, Convert.ToInt32(fs.Length));
    fs.Close();
  }

  Service1.Service1Client srv = new SL1.Service1.Service1Client();

  srv.SaveFileCompleted += (sender1, e1) =>
  {
    foo.Text = "Uploaded!";
  };

  srv.SaveFileAsync(dlg.File.Name, fileContent);
}
Service1.svc.cs中的

[OperationContract]
public string SaveFile(string fileName, byte[] fileContent)
{
  string ret = String.Empty;

  try
  {
    string target = @"c:\debug123\" + fileName;

    if (File.Exists(target))
    {
      File.Delete(target);
    }

    File.WriteAllBytes(target, fileContent);

    ret = "OK";
  }
  catch (Exception ex)
  {
    ret = ex.ToString();
  }

  return ret;
}

有人认为这有什么问题吗?

4 个答案:

答案 0 :(得分:2)

仅供参考,我发现了我的问题并this article解决了这个问题。 “默认情况下,可以从客户端发送到服务的最大消息是8124字节。”所以我不得不通过绑定配置设置来增加限制。

但现在我的主要问题是如何获得一个适当的错误信息,而不是404.我将不得不研究更多,但希望其他人能够得出一个好的答案(不幸的是打破CLR例外没有不帮我。

更新:在进一步阅读the same article后,我发现Windows SDK中包含的WCF服务配置实用程序可以帮助确定潜在的问题。

答案 1 :(得分:1)

我不确定具体问题是什么,但我可以告诉你,上传绝对不仅限于.txt文件 - 我上传了10MB WMV文件没有问题。也许服务端的编码会导致问题?

答案 2 :(得分:1)

没有这样的限制。

将调试器附加到服务并检查引发的异常。为此,您需要将Visual Studio设置为在异常时中断(与未处理相反)。通过选中“Common Language Runtime Exceptions”行中的左侧复选框,在Debug-> Exceptions对话框中执行此操作。

通过将调试器附加到服务(Debug-> Attach to process),您将能够看到真正的错误。 NotFound错误是一般错误 - 真正的错误仅在服务端可见。

答案 3 :(得分:0)