1

我的应用程序(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 的内置网络服务器,是原因吗?

4

1 回答 1

0

好的,所以我想通了,只需要在我的机器上本地安装很长时间的 IIS + 配置,它就会告诉我我在路由中拼错controller了。controlls

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

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

于 2010-08-25T20:55:01.453 回答