Symptom:
Einige Benutzer können nicht erfolgreich POST, die meisten erfolgreich POST.
Wenn der Fehler auftritt, werden Benutzer auf die Seite Shared/Error der Site umgeleitet.Fehlerbehebung Authentifizierungsfehler
Eingesetzte Technologien:
IIS v6
Windows Server 2003
asp.net v3.5
asp.net MVC-Framework v1.0
jQuery
Linq
SQL Server 2005
Authentifizierung : Windows mit dem AspNetActiveDirectoryMembershipProvider
Hier ist ein Ausschnitt der web.config:
<authentication mode="Windows"/>
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
<providers>
<add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider,
 System.Web, Version=2.0.3600.0, Culture=neutral,
 PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnString" connectionUsername="" connectionPassword=""/>
</providers>
</membership>
Hier ist der Link von der Ansicht, dass die Save startet
<a href="javascript:void(document.frmCurrentLineItems.submit())" title="Saves this month only">Save This Month</a>
Hier einige der jQuery basierte javascript:
$("form#frmCurrentLineItems").submit(function() {
submitView(this);
return false;
});
function submitView(form) {
$.ajax(
{
type: form.method,
url: form.action,
data: $(form).serialize(),
dataType: "html",
error: function(error) {
alert(error);
}
}
);
}
Hier ist ein Teil der Controller-Methode:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CurrentLineItems(FormCollection thisForm)
// Get the forecast from the session
BusinessLogic.ForecastBL thisForecast = (BusinessLogic.ForecastBL)HttpContext.Session["ForecastMetaData"];
if (thisForecast != null)
{
// Run the save to db stuff here
return View("CurrentLineItems", ViewData["LineItemSummary"]);
}
else
{
return Redirect("../Shared/Error");
}
Eine Anmerkung über den obigen Code ... Ich bin ziemlich sicher, dass ziehen Das Vorhersageobjekt außerhalb der Sitzung verursacht den Fehler nicht, zumindest gehe ich davon aus, dass die Sitzung nicht abgelaufen ist, weil die Benutzer, die nicht speichern können, nicht speichern können, wenn sie die Seite öffnen und dann sofort versuchen zu speichern.
Die Klasse hat auch diese Attribute:
[HandleError]
[Authorize]
public class ForecastController : Controller
{
Die Seite hat, in IIS Eigenschaften, in den Authentifizierungsmethoden:
Aktivieren Sie die anonyme Zugriff nicht aktiviert und integrierte Windows-Authentifizierung überprüft.
Hier ist ein Blick auf dem IIS-Protokoll von einem Benutzer, der dieses Problem auftritt:
466 2009-04-28 16:41:15 W3SVC1100645706 192.168.10.22 POST/Prognose/CurrentLineItems - 443 - XX.XX .XX.XX Mozilla/4.0 + (kompatibel; + MSIE + 7.0; + Windows + NT + 5.1; + GTB5; +. NET + CLR + 1.1.4322) 401 1 0
467 2009-04-28 16:41 : 15 W3SVC1100645706 192.168.10.22 POST/Prognose/CurrentLineItems - 443 DOMÄNE \ Benutzername XX.XX.XX.XX Mozilla/4.0 + (kompatibel; + MSIE + 7.0; + Windows + NT + 5.1; + GTB5; +. NET + CLR +1.1.4322) 302 0 0
468 2009-04-28 16:41:15 W3SVC1100645706 192.168.10.22 GET/Geteilt/Error - 443 - XX.XX.XX.XX Mozilla/4.0 + (kompatibel; + MSIE + 7.0; + Windows + NT + 5.1; + GTB5; +. NET + CLR + 1.1.4322) 401 1 0
469 2009-04-28 16:41:16 W3SVC1100645706 192.168.10.22 GET/Geteilt/Error - 443 DOMÄNE \ Benutzername XX.XX.XX.XX Mozilla/4.0 + (kompatibel; + MSIE + 7.0; . + Windows-NT + + 5.1; + GTB5; + NET + CLR + 1.1.4322) 404 0 0
Hier die gleichen Linien für hoffentlich eine bessere Lesbarkeit abgespeckte:
2009-04-28 16.41.15 POST/Prognose/CurrentLineItems - 443 - XX.XX.XX.XX 401 1 0
2009-04-28 16:41:15 POST/Prognose/CurrentLineItems - 443 DOMAIN \ Benutzername XX.XX.XX.XX 302 2009-04-28 16:41:15 GET/Geteilt/Fehler - 443 - XX.XX.XX.XX 401 1 0
2009-04-28 16:41:16 GET/Geteilt/Fehler - 443 DOMAIN \ Benutzername xx.xx.xx.xx 404 0 0
habe gerade bemerkt, dass alle POST-Anfragen die oben aussehen ... mit Ausnahme des erfolgreichen jemandes eine 200 auf dem zweiten POST zurückkehren ...
wie stelle ich fest, was den ersten POST verursacht, der oben auf dem Webserver ohne die DOMÄNE \ Benutzername-Info und einen Fehler 401 ist?
Auch warum der Fehler 302?
Scheint so, als würde ich nach zwei POSTS fragen ... aber ich verstehe nicht recht, warum der Browser zwei POST-Anfragen sendet? (natürlich ... ich vermute meinen Code, kann aber nicht recht herausfinden, warum.)
Alle Methoden zur Problembehandlung, die helfen, die oben genannten Fehler aufzuspüren, wären willkommen.
Am einen Blick jetzt auf Troubleshooting HTTP 401 errors in IIS bearbeiten nehmen .... dies nicht wirklich helfen w/mein Problem
James, Danke, dass du dir die Zeit genommen hast zu antworten. Ich scheine die Fehler zu lösen, indem ich den Link oben auf einen Eingabeknopf mit einem Submit-Typ änderte ... Danke nochmal – w4ik