上载时ASP.NET连接重置

时间:2010-08-25 05:24:01

标签: asp.net-mvc-2 file-upload upload uploading image-uploading

我遇到了我的应用程序(ASP.NET MVC 2)的问题,我无法上传文件(在我的情况下是图像)。我已经将web.config更改为接受最多20MB,我正在尝试上传一个只有3MB的文件。

该应用程序本身有两种上传方式。初始上传,启动图库,然后附加上传以附加到图库。

最初的作品就像一个魅力,但附加的却失败了,没有任何解释。即使我重新上传初始图像作为追加,它仍然会失败。

我有点坚持这个,所以我很感激你们能提供的任何帮助。

提前致谢!

修改

如果我用Firebug“破解”表单并将其指向初始上传Url它可以正常工作,但是当它指向Url时它应该发布到它失败...

编辑2

根据Rob的要求,这是处理初始图库和附加图像的代码:

[HttpPost, ValidateAntiForgeryToken]
public RedirectToRouteResult PutGallery(    //  Move to Ajax
    [Bind(Prefix = "Gallery", Include = "ClubId,EventId,RHAccountId,RHCategoryId,Year")] Gallery Gallery,
    HttpPostedFileBase File) {
    if (ModelState.IsValid && (File.ContentLength > 0)) {
        if (Gallery.RHAccountId > 0) {
            Gallery.RHUser = this.fdc.RHAccounts.Single(
                a =>
                    (a.RHAccountId == Gallery.RHAccountId)).RHUser;
        } else {
            if (!this.fdc.RHUsers.Any(
                u =>
                    (u.User.Name == Gallery.Username))) {
                if (!this.fdc.Users.Any(
                    u =>
                        (u.Name == Gallery.Username))) {
                    Gallery.RHUser = new RHUser() {
                        User = new User() {
                            Name = Gallery.Username
                        }
                    };
                } else {
                    Gallery.RHUser = new RHUser() {
                        User = this.fdc.Users.Single(
                            u =>
                                (u.Name == Gallery.Username))
                    };
                };
            } else {
                Gallery.RHUser = this.fdc.RHUsers.Single(
                    u =>
                        (u.User.Name == Gallery.Username));
            };
        };

        Image Image = new Image() {
            Gallery = Gallery
        };

        this.fdc.Galleries.InsertOnSubmit(Gallery);
        this.fdc.Images.InsertOnSubmit(Image);
        this.fdc.SubmitChanges();

        Files.Save(Image.ImageId, File);

        return RedirectToAction("Default", "Site");
    } else {
        return RedirectToAction("Default", "Site");
    };
}

[HttpPost, ValidateAntiForgeryToken]
public RedirectToRouteResult PutImage(
    [Bind(Prefix = "Image", Include = "GalleryId")] Image Image,
    HttpPostedFileBase File) {
    Gallery Gallery = this.fdc.Galleries.Single(
        g =>
            (g.GalleryId == Image.GalleryId));

    if (File.ContentLength > 0) {
        this.fdc.Images.InsertOnSubmit(Image);
        this.fdc.SubmitChanges();

        Files.Save(Image.ImageId, File);
    };

    return RedirectToAction("Gallery", "Site", new {
        Category = Gallery.RHCategory.Category.EncodedName,
        GalleryId = Gallery.GalleryId
    });
}

旁注:

Cassini,VS 2010的内置网络服务器能成为原因吗?

1 个答案:

答案 0 :(得分:0)

好的,所以我想出来了,它只需要在我的机器+配置上本地安装一个长时间的IIS,让它告诉我我错过拼写controller作为controlls路由。

真的很烦人,所有这一切都是为了得到真正的错误,所以卡西尼部分错了......

所以,故事的寓意是,确保你拼写正确的一切。