1

現在、次のようなアップロードフォームがあります

<form action="/Upload/Registration?measurementId=139" enctype="multipart/form-data" method="post">
    <fieldset>
        <legend>Registrationfiles</legend>
        <input type="hidden" name="MeasurementId" value="139"/>
            <div class="editor-field">
                <input id="RadioSelection" name="RadioSelection" type="radio" value="0" />
                <label>or</label>
                <input type="hidden" name="RecordId[0]" value="375" />
                <input type="file" name="RegistrationFile[0]" />
            </div>
        <p class="submit">
            <input type="submit" value="Save" />
        </p>
    </fieldset>
</form>

そして、私は2つの方法を持っていますUploadController:

[Authorize]
public ActionResult Registration(int measurementId)
{
    [...]
    return View(registrationViewModel);
}

[HttpPost]
[Authorize]
public ActionResult Registration(RegistrationViewModel data, ICollection<int> RecordId, ICollection<HttpPostedFileBase> RegistrationFile)
{
    [...]
}

http://mySite.com/Upload/Registration?measurementId=139にアクセスすると、(予想どおり) フォームが表示されますが、送信するとError 500 - (Internal Server Error).

このバグの理由は何ですか?

多くのブレークポイントがありますが、ヒットするものはありません。「エラー500」しか表示されません。

これは応答ヘッダーです。

HTTP/1.1 500 Internal Server Error
Cache-Control: private, s-maxage=0
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 3.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Sun, 17 Feb 2013 18:50:13 GMT
Content-Length: 0

編集: 2 番目の方法を削除すると、エラー 500 は発生しません。また、YSODが発生することはありません。

4

1 に答える 1

0

web.configでcustomErrorsを「On」に設定し、Error.cshmtlにリダイレクトします。これは、500エラーを修正するためにのみ実行し、後で「オフ」に戻す必要があります。

詳細な手順については、defaultRedirectを機能させることができないまたはhttps://stackoverflow.com/a/6211961/1176596を参照してください。

考えられる問題の1つは、ビューで使用されているモデルの1つにデフォルトのコンストラクターがないことです。その場合、エラービューにMissingMethodExceptionが表示されます。

于 2013-02-22T12:56:32.583 に答える