将Silverlight与ASP.NET MVC一起使用时收到WebException NotFound

时间:2011-01-11 18:28:01

标签: asp.net-mvc silverlight webexception

我不完全确定如何解释这个问题,但基本上我正在尝试使用ASP.NET MVC应用程序中托管的Silverlight应用程序。我在MVC端有一个基本控制器,它包含一个方法,它接受一些字符串参数并返回一个ActionResult(为了这个程序的目的,结果是一些Json数据)。

当我在Silverlight控件中处理WebClient.OpenReadCompleted事件时,我的问题出现了。在此控件中调用WebClient.OpenReadAsync方法时,它成功到达控制器,然后按预期报告回相关的事件处理程序。但是,处理它时,事件参数包含一个错误,指出:“远程服务器返回错误:NotFound。”。

以前,我注意到这是因为我的通讯网址的某些部分不正确 - 在这种情况下不是。从一些谷歌搜索,我也注意到这是一般错误。因此,我很难过。为了让事情更加混乱,我在程序的另一部分中使用这种完全相同的通信尝试,它检索字符串数组,并且完全正常。

请参阅下面的示例代码(由于此程序的性质,我无法发布完整代码)。

Silverlight控制

WebClient mClient = new WebClient();

public void RequestData()
{
    mClient.OpenReadAsync(new Uri("http://localhost:51234/Home/GetData"));
    mClient.OpenReadCompleted += new OpenReadCompletedEventHandler(mClient_OpenReadCompleted);
}

private void mClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if(!e.Cancelled && e.Error == null) // <-- e.Error here is a WebException
    {
        var serializer = new DataContractJsonSerializer(typeof(Data));
        Data data = (Data)serializer.ReadObject(e.Result);
    }
}

MVC控制器 - 命名为HomeController并使用“Home”访问

public ActionResult GetData()
{
    return Json(new Data(), JsonRequestBehaviour.AllowGet);
}

注意 这里,Data包含三个类型的成员;字符串,字符串和字节数组。为了序列化,我通过包含get和set部分的公共属性公开了所有三个成员。我还添加了一个不带参数的公共构造函数。

对此有任何建议将不胜感激。

非常感谢提前。

更新

我刚尝试了不同数据的相同代码,并且工作正常。我想知道它是否是数据的大小(因为第一次尝试是非常大的数据),但我不明白为什么如果呼叫设法击中控制器那将是重要的。

1 个答案:

答案 0 :(得分:1)

如果您想查看真正的服务器端异常,这可能会对您有所帮助:

http://msdn.microsoft.com/en-us/library/ee844556(v=VS.95).aspx

这两种方法都可能说明真正的问题。