0

オフィスのメンバーにメールを送信する 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 とパスワードを要求します。ログインウィンドウなしでピックアップする必要があります。

これを達成するための他のアプローチを支援または提案してください。

4

2 に答える 2

1

Web サービスと IIS の Windows 認証を有効にする必要があります。その後、Request オブジェクトを見てユーザーを取得できるはずです。

于 2013-06-30T14:07:28.550 に答える
0

使用するEnvironment.UserName

これがMSDNのドキュメントです。 http://msdn.microsoft.com/en-us/library/system.environment.username.aspx

編集 - 現在のシステムにログインしているすべてのユーザーを取得するには、この質問/回答 -サービスから Windows の対話型ユーザーをログオフするを確認してください。

WMI を使用し、システム DLL を介して、現在のシステムにログインしているユーザーのリストを取得する方法を示しています (サービス アカウントが含まれている場合と含まれていない場合がありますが、私自身は試していません)。

編集 - 統合セキュリティを使用すると、達成しようとしていることがうまくいきますが、大企業でのセットアップは少し難しい場合があります。ログイン プロンプトをなくすために、Internet Explorer は「イントラネット ゾーン」内のサイトに対して自動認証を行いますが、「インターネット ゾーン」内のサイトに対しては自動認証しません。ユーザーが同じドメイン内にいる場合を除き、 Web サービスの URL がイントラネット ベースであること、つまりhttp://myserver/インターネット ベースではないことを確認してください。http://myserver.mycorp.com/そうでない場合は、ユーザーに「*.mycorp.com」をイントラネット ゾーンに追加してもらいます。FireFox にも同様の構成があり、自動認証のために特定のサイトを「信頼」する必要があります。

于 2013-06-29T10:49:36.603 に答える