WebClient无法连接到IHttpHandler

时间:2009-11-23 15:32:57

标签: c# asp.net silverlight

我根据为.NET framework 2制作的示例1创建了我的程序,但我将其转换为.NET framework 3.5。我应该如何修改此代码以使其正常工作?我该如何调试服务器端?当我手动将参数插入url时,服务器端似乎工作,所以问题必须在客户端代码中。

private void UploadFile(string fileName, System.IO.Stream data)
{
    UriBuilder ub = new UriBuilder("http://localhost:59491/receiver.ashx");
    ub.Query = string.Format("filename={0}", fileName);

    WebClient c = new WebClient();
    c.OpenWriteCompleted += (sender, e) =>
    {
        PushData(data, e.Result);
        e.Result.Close();
        data.Close();
    };
    c.OpenWriteAsync(ub.Uri);
}

private void PushData(System.IO.Stream input, System.IO.Stream output)
{
    byte[] buffer = new byte[4096];
    int bytesRead;

    while ((bytesRead = input.Read(buffer, 0, buffer.Length)) != 0)
    {
        output.Write(buffer, 0, bytesRead);
    }
}

1 http://www.c-sharpcorner.com/UploadFile/nipuntomar/FileUploadsilverlight03182009030537AM/FileUploadsilverlight.aspx

1 个答案:

答案 0 :(得分:0)

我最初的看法是端口说明符。在该示例中,他将请求URI专门设置为端口3840,但他从未显示修改设置以强制Web服务器在托管处理程序时使用该端口。确保请求URI使用的是与从浏览器手动访问处理程序时相同的端口。

编辑:我认为必须如此,我只是使用最新的框架在VS2008的新项目中重新创建了示例,一切正常,一旦我设置了正确的端口。

至于调试服务器,如果你将一半项目的服务器托管在visual studio之外(如果你在CSharpCorner示例中跟踪那个人那就是你),你应该已经调试了服务器组件,只需要服务器代码隐藏中的断点。