上传时重置 ASP.NET 连接

发布于 2024-09-15 20:55:29 字数 2941 浏览 3 评论 0原文

我的应用程序 (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
    });
}

旁注:

VS 2010 的内置 Web 服务器 Cassini 可能是原因吗?

I'm running into a problem with my app (ASP.NET MVC 2) where I can't upload files (images in my case). I've changed the web.config to accept up to 20MB, and I'm trying to upload a file that's only 3MB.

The app itself has two ways to upload. The initial upload which starts a Gallery and then an additional upload to append to a Gallery.

The initial works like a charm, but the appending one fails with no explanation. Even if I re-upload the initial image as an append it still fails.

I'm a little stuck on this so I would appreciate any help you guys can offer.

Thanks in advance!

EDIT

If I "hack" the form with Firebug and direct it to the initial upload Url it works, but when it's directing to the Url it should be posting to it fails...

EDIT 2

Per Rob's request, here's the code handling the initial gallery and appending image:

[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
    });
}

SIDENOTE:

Could Cassini, VS 2010's built in web server, be the cause?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟沫凡尘 2024-09-22 20:55:29

好吧,所以我想通了,只需要在我的机器上本地安装 IIS 并进行配置,它就会告诉我我将 controller 拼写为 controlls 在路线中。

真的很烦人,需要所有这些才能得到真正的错误,所以卡西尼号有部分错误......

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

Ok, so I figured it out, it only took a lengthy install of IIS locally on my machine + the configuration, to have it tell me that I miss-spelled controller as controlls in the routes.

Really annoying that it took all of that to get the real error, so Cassini was partially at fault...

So, the moral of the story is, make sure you spell everything correctly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文