以编程方式连接到位于ForeFront UAG后面的ASP.NET WebAPI

Dar*_*Cox 5 xamarin.ios asp.net-web-api

我有一个使用ASP.NET MVC4构建的WebAPI.它是一个用于获取数据的简单API(简单的HTTP GET请求).API很稳定,并且已经使用我们的移动(MonoTouch)应用程序很长一段时间了.现在我们将ForeFront UAG放在API前面(只需更改web.config即可使用windows auth.通过浏览器测试安全性和API,例如Chrome,并显示UAG登录(首次点击API时).输入您的凭据然后你获取API GET请求的数据.所有你期望的.现在,从.NET代码(没有浏览器)我想做同样的事情.我已经看到以编程方式访问SharePoint的示例和一些窗口手机的东西,但它们似乎都不适用于常规旧.NET代码(我最终将在MonoTouch中使用)的ASP.NET MVC4 WebApi调用.

任何人都有一个如何验证然后通过UAG成功将HTTP GET请求发送到ASP.NET MVC4 WebApi的示例?

小智 0

我没有 ForeFront UAG 的处理能力,所以我无法对此进行测试。但一般来说,您有几种选择。这些示例是片段,为了便于阅读,省略了一些代码。

Web 客户端 / HttpWeb 请求

CredentialCache credentials = new CredentialCache();
credentials.Add(new Uri(url), "NTLM", new NetworkCredential(userName, password, domain));

//WebClient
var webClient = new WebClient();
webClient.Credentials = credentials;

//HttpWebRequest
var request = HttpWebRequest.Create(url);
request.Credentials = credentials
Run Code Online (Sandbox Code Playgroud)

Http客户端

WebRequestHandler clientHandler = new WebRequestHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.AllowPipelining = true;
clientHandler.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

ProgressMessageHandler progress = new ProgressMessageHandler();

httpClient = HttpClientFactory.Create(clientHandler, progress);
Run Code Online (Sandbox Code Playgroud)

您还可以选择使用第三方库来完成这项工作,例如RestSharpService Stack。就我个人而言,我使用 RestSharp 是因为它易于使用且具有序列化/反序列化功能。