我有一个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;
}
有人认为这有什么问题吗?
答案 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)