我有一个 DNN 7 网站,其 Web 服务端点如下:
public class DNNRoleManagementServiceController: DnnApiController
{
//[AllowAnonymous]
[RequireHost]
[HttpGet]
public HttpResponseMessage ManagePortalUserToRole(int PortalID, int UserID, int RoleID, bool RemoveFromRole )
{
//stuff
}
}
它是用于开发的 AllowAnonymous,现在是 RequireHost,因为端点上的安全性很好。这些端点只能由我们的系统使用,因此[RequireHost]
似乎是正确的身份验证级别。
我有我的 c# 库来调用这个端点:
WebClient webClient = new WebClient();
Uri uri = new Uri(uriString.ToString());
webClient.Credentials = new NetworkCredential("host", "password");
webClient.DownloadStringCompleted += GetStringCompleted;
webClient.DownloadStringAsync(uri);
即使使用正确的密码,我得到的只是 400 或 401 响应。所以很明显,我以错误的方式提供了我的凭据。只是,正确的方法是什么?我在 DNN WebAPI 上找到的所有文档都是“应用[AllowAnonymous]
属性,以便任何人和他们的狗都可以使用您的网络服务!” 如果您提供的服务是供公众消费的,那就太好了。这不是其中一种情况。
那么提供主机凭据以使调用有效的正确方法是什么?我真的不确定这里。