質問1:のみ与えルーティングパターンのアップロード制限を設定する方法はありますか?
<location>
ノードが動的URLをサポートしていないため、私は認識していません。しかし、あなたはurl rewrite moduleを使ってそれを欺くことができます。
それでは、あなたはファイルのアップロードを処理するコントローラを持っていると仮定してみましょう:
public class PicturesController
{
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file, int dynamicValue)
{
...
}
}
、あなたはこのコントローラに一致するように設定いくつかのルートがあること:
routes.MapRoute(
"Upload",
"{dynamicvalue}/ConvertModule/Upload",
new { controller = "Pictures", action = "Upload" },
new { dynamicvalue = @"^[0-9]+$" }
);
OK、今みましょうセットアップ、次のウェブのルールを書き換えます。設定:
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="rewrite the file upload path" enabled="true">
<match url="^([0-9]+)/ConvertModule/Upload$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="pictures/upload?dynamicvalue={R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
をこれまでのところは良い、今はセットアップ<location>
pictures/upload
にできます書き換えます{dynamicvalue}/ConvertModule/Upload
とURL書き換えモジュール:
<location path="pictures/upload">
<system.web>
<!-- Limit to 200MB -->
<httpRuntime maxRequestLength="204800" />
</system.web>
<system.webServer>
<security>
<requestFiltering>
<!-- Limit to 200MB -->
<requestLimits maxAllowedContentLength="209715200" />
</requestFiltering>
</security>
</system.webServer>
</location>
は今、あなたは次のパターンのURLにアップロードできますpictures/upload?dynamicvalue={dynamicvalue}
にそれが、<location>
タグはpictures/upload
と一致し、正常に制限が適用されます:
<form action="/123/ConvertModule/Upload" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<button type="submit">OK</button>
</form>
を
質問2:アップロードサイズを超えた場合にカスタム警告を表示することはできますか?
いいえ、上限を大きく設定し、アップロードハンドラ内でファイルサイズを確認する必要があります。クライアント(HTML5、Flash、Silverlightなど)でファイルサイズを確認できる場合は、帯域幅を無駄にしないようにします。
あなたには2つの質問があります。あなたは最高の応答のためにそれらを別々に掲示したいかもしれません。 Q2の回答では、アップロードサイズを超えたときにサーバーからエラー応答が返されます。必要に応じて、その応答の特定のエラーページをアプリケーションに表示することができます。 –
アップロード時間をweb.configで変更することを忘れないでください。基本的に2MBのファイルに設定されていると思います – Oedum