2016-05-21 26 views
0

Ich authentifiziere mich mit einem CRM, das in IIS mit Domänenkonten ausgeführt wird. Ich möchte Backslash in der REMOTE_USER-Servervariable ersetzen, um anstelle von Domain \ User Domain_User oder etwas zu ersetzen, da es einen Fehler auslöst, wenn der umgekehrte Schrägstrich an die Datenbank zurückgegeben wird. Ich versuchte, ein Httpmodule zu schreiben, aber es gibt Fehler auf dieser Linie „Operation wird auf dieser Plattform nicht unterstützt“:Backslash in der REMOTE_USER-Servervariable ersetzen, wenn die Authentifizierung mit Domänenbenutzer erfolgt httpModule

oServerVars["REMOTE_USER"] = remote_user.Replace("\\", "_"); 

Der Code ich benutze ist unten:

private void Context_AuthenticateRequest(object sender, EventArgs e) 
    { 
     HttpApplication application = (HttpApplication)sender; 
     HttpContext context = application.Context; 

     //Pulling out the Server Variables Collection 
     NameValueCollection oServerVars = context.Request.ServerVariables; 

     //Request REMOTE_USER Variable 
     if (!string.IsNullOrEmpty(oServerVars["REMOTE_USER"])) 
     { 
      string remote_user = oServerVars["REMOTE_USER"]; 

      //Locate the server variables field in the collection 
      oServerVars = (NameValueCollection)context.Request.GetType().GetField("_serverVariables", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(context.Request); 

      //Locate the readonly fields 
      PropertyInfo oReadable = oServerVars.GetType().GetProperty("IsReadOnly", BindingFlags.NonPublic | BindingFlags.Instance); 

      //Setting the new value 
      oReadable.SetValue(oServerVars, false, null); 
      oServerVars["REMOTE_USER"] = remote_user.Replace("\\", "_"); 
      oReadable.SetValue(oServerVars, true, null); 
     } 
    } 

Ich habe auch versucht, den Code in BeginRequest zu setzen, aber kein Glück. Gibt es einen Weg, das zu erreichen?

Antwort

0

Es stellt sich heraus, dass es nicht möglich ist. Der einzige andere Weg, den ich finden könnte, ist, eine neue Servervariable zu erstellen, sie der Sammlung hinzuzufügen und diese aufzurufen.