2016-03-22 25 views
0

私は今朝までうまく動作していた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はまったくのデータを示していません!

私は局所的には、前述のように、私はそのような問題

すべてのヘルプは本当に背中のライン、私のサイトを取得することは理解されるであろうがありません!

答えて

0

私は最終的にIISサーバーの問題を発見しました!

私のWebサーバには、ModSecurity Installedというツールがあり、私のPOSTリクエストを明らかに妨害していました。

<ModSecurity enabled="false" />という行をサイトのweb.configに追加すると、すべて元の状態に戻りました。

今後この問題で他の誰かに役立つことを願っています。

+1

はい、これはIISのModSecurityで引き続き問題になります。 'SecStreamInBodyInspection On'をmodsecurity_iis.confファイルに追加する必要があります。これにより、POSTデータがASP.NETに渡されないという問題が修正されます。詳細については、[Github issue](https://github.com/SpiderLabs/ModSecurity/issues/562)を参照してください。 – truemedia

関連する問題