2016-05-21 9 views
0

ドメインアカウントを使用してIISで実行されているCRMで認証しています。 REMOTE_USERサーバー変数のバックスラッシュを置き換えて、Domain \ User Domain_Userの代わりに返すか、バックスラッシュがデータベースに戻ったときにエラーをスローするため、何らかの並べ替えが必要です。私はHttpModuleをを書いてみましたが、それは、この行に 「操作はこのプラットフォームではサポートされていません」というエラーが返されます。ドメインユーザーiisで認証するときにREMOTE_USERサーバー変数のバックスラッシュを置き換えます。iis httpModule

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

私が使用しているコードは以下の通りです:

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); 
     } 
    } 

私も試してみましたコードをBeginRequestに入れるが運がない。それを達成する方法はありますか?

答えて

0

それはできません。私が見つけることができる唯一の他の方法は、新しいサーバー変数を作成し、それをコレクションに追加して、それを呼び出すことです。

関連する問題