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に入れるが運がない。それを達成する方法はありますか?