私は今朝までうまく動作していたASP.NET Webサイトを持っています。 私のすべてのユーザーはログインできません!IIS 8 ASP.NET WebページのRazor WebサイトでPOSTデータを受け取りません
私は、運が少しでも問題を見つけようと努力しました。
ここでは、IISがPOSTデータを受け入れないように問題を絞り込んだ。
ユーザのPOSTにユーザ名とパスワードがあるたびにデータのRequest.Form
セクションにはNULLが返されます。
ローカルのMy Devマシンでは、これはいつものように機能します。私はRequest.Form.Allkeys
を使って私にすべてのデータを送ってきてくれます。
POSTリクエストが実際に送信されているかどうかを確認するために私はGoogle Chromeの開発ツールを使用しました。はい、それはデータの横にあります。 IISが何かを受け入れていないか、私のASP.NETコードとして全くPOSTデータを保持していないことが表示されます
はここ
をそれを拾う私のログインフォームです:
セクションショー以下<section id = "loginForm" >
<form name="mainLog" method="post">
@* If one or more validation errors exist, show an error *@
@Html.ValidationSummary("Log in was unsuccessful. Please correct the errors and try again.", excludeFieldErrors:=True, htmlAttributes:=Nothing)
<fieldset>
<legend>Sign in to Your Account</legend>
<ol>
<li class="email">
<label for="email" @If Not ModelState.IsValidField("username") Then @<text> class="error-label" </text> End If>Username</label>
<input type="text" id="username" name="username" />
@* Write any user name validation errors to the page *@
@Html.ValidationMessage("username")
</li>
<li class="password">
<label for="password" @If Not ModelState.IsValidField("password") Then @<text> class="error-label" </text> End If>Password</label>
<input type="password" id="password" name="password" />
@* Write any password validation errors to the page *@
@Html.ValidationMessage("password")
</li>
<li class="remember-me">
<input type="checkbox" id="rememberMe" name="rememberMe" value="true" checked="@rememberMe" />
<label class="checkbox" for="rememberMe">Remember me?</label>
</li>
</ol>
<input type="submit" value="Log in" />
</fieldset>
</form>
</section>
私は、このPOSTデータ拾っています。ここで私の地元のdevのボックスで
If (IsPost) Then
If Validation.IsValid() Then
' Attempt to log in using provided credentials
'Recive username and password from form
username = Request.Form("username")
password = Request.Form("password")
を、このabsolutly罰金で、ユーザー名とパスワードがrecevedと処理されます。しかし、私のライブIIS 8サーバーでは、彼らはいつもヌルとして出てきて、データのキーはありません。
は、ここで(bashで)要求の例である:
-H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.8' -H 'Upgrade-Insecure-Requests: 1' -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Cache-Control: max-age=0' -H 'Referer: ' -H 'Connection: keep-alive' -H 'DNT: 1' --data 'username=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb' --compressed
ユーザ名のデータが送られてきているが、Request.Form.AllKeys
はまったくのデータを示していません!
私は局所的には、前述のように、私はそのような問題
すべてのヘルプは本当に背中のライン、私のサイトを取得することは理解されるであろうがありません!
はい、これはIISのModSecurityで引き続き問題になります。 'SecStreamInBodyInspection On'をmodsecurity_iis.confファイルに追加する必要があります。これにより、POSTデータがASP.NETに渡されないという問題が修正されます。詳細については、[Github issue](https://github.com/SpiderLabs/ModSecurity/issues/562)を参照してください。 – truemedia