使用用户名/密码组合很好,但不是通过查询字符串传递,而是以更标准化的方式(HTTP 基本身份验证)进行,即将此信息添加到消息的请求标头中。下面是代码的样子:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"https://localhost:8010/api/Customer/1");
//Add a header to the request that contains our credentials
//DO NOT HARDCODE IN PRODUCTION!! Pull credentials real-time from database or other store.
string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("user1"+ ":" + "test"));
req.Headers.Add("Authorization", "Basic " + svcCredentials);
您的问题被标记为“WCF”和“Web API”,因此检查凭据服务器端有点不同。但是,您实际上是拉出“授权”标头并检查凭据以查看用户是否经过身份验证和授权。如果它们未通过身份验证,则返回 HTTP 401 消息。
对于托管在 IIS 中的基于 WCF REST 的服务,您可以从我的博客文章中查看完整的详细示例:
在 IIS 中托管的基于 REST 的服务中使用基本身份验证