在构建使用集成Windows身份验证的RESTful Web服务的Web客户端时,我遇到了麻烦。
当我在本地运行客户端(就像我自己)时,它运行正常,我在IIS日志中看到了我的用户ID。但是,当我远程运行它时,没有传递凭据(即我没有在IIS日志中看到我的用户ID),并且我收到错误
"远程服务器返回错误:(401)未经授权。"
本地和已发布的客户端都调用相同的服务。另请注意,当我在本地运行时,IIS日志会显示两个条目(一个没有用户名,另一个没有用户名)。当我从发布的位置运行时,仍然有两个条目,但都没有显示用户名。
以下是我用来拨打电话的代码:
var request = (HttpWebRequest) WebRequest.Create(ConfigurationManager.AppSettings["positionServicePath"] + "?positionNumberSearch=" + searchString);
request.Method = "GET";
request.ContentType = "application/json";
request.UseDefaultCredentials = true;
request.PreAuthenticate = false;
CredentialCache cc = new CredentialCache();
cc.Add(
new Uri(ConfigurationManager.AppSettings["positionServicePath"]),
"Negotiate",
CredentialCache.DefaultNetworkCredentials);
request.Credentials = cc;
// Get the Response
using (var response = request.GetResponse()){
var reader = new StreamReader(response.GetResponseStream());
// Convert the response to objects from Json
var resultList = JsonConvert.DeserializeObject<IEnumerable<PositionModel>>(reader.ReadToEnd());
// Return an empty list, if no data was retrieved
return resultList != null ? resultList.ToList() : new List<PositionModel>();
}
非常感谢任何帮助。
答案 0 :(得分:0)
我认为你必须创建允许你的项目的IIS用户。
第二个选项:
尝试在Microsoft Internet信息服务(IIS)中的身份验证方法中启用anonymous access
。
Step:
1. Open your IIS.
2. In IIS Group:
3. open or select Authentication:
4. Select Anonymous Authentication:
5. On the Left Side select Enabled.
祝你好运!
答案 1 :(得分:0)
我发现此问题的答案与以下Stack Overflow帖子的答案相同:Unable to authenticate to ASP.NET Web Api service with HttpClient。
感谢那些花时间看这个的人!