2013-05-23 3 views
0

Je suis un junior dans une classe de génie logiciel et de développement web et j'ai rencontré un problème. J'ai besoin d'une page de connexion afin qu'après qu'un utilisateur clique sur le bouton de connexion, ils seront envoyés à ma page Web réelle. Cependant, chaque fois que je clique sur le bouton de connexion je reçois cette erreur:Contrôle de connexion Problème

Server Error in '/Case04' Application. 

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster." 

Pour ce projet spécifique, je ne suis pas préoccupé par ce que l'utilisateur entre dans la mesure où ils entrent dans l'information. J'en ai juste besoin quand je clique sur le bouton de connexion et que je suis redirigé vers ma page Web actuelle, pc.aspx.

Voici mon code:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="Login" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
<link href="login.css" rel="stylesheet" type="text/css" /> 
    <title></title> 
</head> 
<body> 
<%--Heading--%> 
<form name="c_order" id="c_order" runat="server" 
action="pc.aspx" method="get"> 
<table> 
    <tr> 
     <td> 
      <img src="mclogog.jpg" alt="heading" id="heading" /> 
     </td> 
    </tr> 
</table> 

<%--login--%> 
<asp:Login ID="login" class="login" runat="server" size="10" maxlength="25" EventValidation="false"></asp:Login> 
<p id="member" >Already a member?</p> 

<%--fieldset for new user --%> 
<fieldset> 
<legend id="bill">Shipping Information</legend> 
     <label for="fname" >First Name<span>*</span></label> 
     <input type="text" name="fname" id="fname" size="27" /> 
     <label for="lname"> Last Name<span>*</span></label> 
     <input type="text" name="lname" id="lname" size="27" /> 
     <label for="address1">Address #1<span>*</span></label> 
     <input type="text" name="address1" id="address1" size="57" /> 
     <label for="address2">Address #2</label> 
     <input type="text" name="address2" id="address2" size="57" /> 
     <label for="city">City<span>*</span></label></td> 
     <input type="text" name="city" id="city" size="40" /> 
     <label for="state">State<span>*</span> </label> 
     <input type="text" name="state" id="state" size="3" /> 
     <label for="zip">ZIP<span>*</span> </label> 
     <input type="text" name="zip" id="zip" size="10" maxlength="10" /> 
     <label for="country">Country<span>*</span></label> 
     <input type="text" name="country" id="country" size="40" value="United States" /> 
     <p id="ast"> 
     * = Required field, must be filled in. 
     </p>  
</fieldset> 
</form> 
</body> 
</html> 

Je vous serais reconnaissant toute aide, merci!

+0

Est-ce hébergé sur un serveur ou dans un environnement de ferme Web? L'erreur que vous obtenez est parce que viewstate sur la page renvoyée par le client ne correspond pas à ce que le serveur a envoyé à l'origine. Peut-être parce que vous frappez un serveur différent dans la ferme? – Tim

Répondre

0

Le problème est que votre page ne gère pas ses propres événements. Votre balise form> < est configurée pour afficher ses valeurs sur une autre page.

< forme ... action = "pc.aspx" ... /> mais votre page est vraiment appelé login.aspx. Ainsi, lorsque le contenu de ce formulaire est publié sur pc.aspx, il ne peut pas décoder le viewstate, car il ne provient pas de pc.aspx.cs. Cela venait d'une page différente. Supprimez l'attribut action de votre balise de formulaire.

Comme ceci:

<form name="c_order" id="c_order" runat="server" method="get"> 
+0

Merci! Travaillé parfait. – user2262689