1

ファイル (私の場合は画像) をアップロードできないアプリ (ASP.NET MVC 2) で問題が発生しています。最大 20 MB を受け入れるように web.config を変更し、わずか 3 MB のファイルをアップロードしようとしています。

アプリ自体には、アップロードする方法が 2 つあります。ギャラリーを開始する最初のアップロードと、ギャラリーに追加するための追加のアップロード。

最初のものは魅力のように機能しますが、追加のものは説明なしで失敗します. 最初の画像を追加として再アップロードしても失敗します。

私はこれに少し行き詰まっているので、皆さんが提供できる助けをいただければ幸いです。

前もって感謝します!

編集

Firebug でフォームを「ハック」し、最初のアップロード URL に送信すると機能しますが、URL に送信する場合は、投稿する必要がありますが失敗します...

編集2

ロブのリクエストによると、最初のギャラリーと追加の画像を処理するコードは次のとおりです。

[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 が原因でしょうか?

4

1 に答える 1

0

わかったので、ルートのcontrollerようにスペルが間違っていることを知らせるために、IIS をマシンにローカルにインストールして構成するだけで十分でした。controlls

実際のエラーを取得するのにそのすべてがかかったのは本当に面倒だったので、Cassini に部分的な過失がありました...

したがって、この話の教訓は、すべてを正しく綴ることです。

于 2010-08-25T20:55:01.453 に答える