オフィスのメンバーにメールを送信する Web サイトを持っています
このメールにははいいいえボタンがあります。
はい/いいえボタンをクリックすると、Webサービスを呼び出します。はいいいえリンクは次のようになります
<a href="http://xxxxx/xxxxx/votCatWSer.asmx/takevotingOpt?yesNo=yes&sNo=1">yes</a>
これで、ユーザー、つまり私のオフィスのスタッフがシステムにログインして Outlook を開き、このメールを見つけてクリックします。
彼らがクリックすると、Web サービスの takevotingOpt メソッドが呼び出されます。このメソッドでは、この呼び出しがどのユーザーから来たのかを知りたいです。xyzユーザーがyes/noに投票したように、データベースに記録を維持できるように
たとえば、彼らは私の組織 A と B の 2 人のメンバーであるとします。
A の Windows loginId は「AaLoginId」であり、
BのWindows loginIdは「BbLoginId」です
A と B の両方が、上記のリンクを含むメールを受け取ります。A が yes/no リンクをクリックすると、私の Web メソッドは A のログイン ID、つまり " AaLoginId " を与えるはずです。これを取得した後、A が賛成票を投じたので、データベースにエントリを作成します。
ユーザー名を取得するためにWebサービスで以下を試しましたが、役に立たないので助けてください。
Windowsログインユーザー名を取得するためにこれを試しました。
//string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
//Uri uri = new Uri("http://tempuri.org/");
//ICredentials credentials = CredentialCache.DefaultCredentials;
//NetworkCredential credential = credentials.GetCredential(uri, "Ntlm");
////userName = credential.UserName;
//userName = User.Identity.Name;
//userName= System.Threading.Thread.CurrentPrincipal.Identity.Name;
//userName = Context.Request.ServerVariables["LOGON_USER"].ToString();
//userName = HttpContext.Current.User.Identity.Name.ToString();
私は inetmgr で認証に行き、ホストされた Web サービスの Windows 認証を有効にしましたが、それは私が望むこと (userName = User.Identity.Name;) を行いますが、ブラウザー ウィンドウを開き、Windows のユーザー ID とパスワードを要求します。ログインウィンドウなしでピックアップする必要があります。
これを達成するための他のアプローチを支援または提案してください。