我已经下载了一个产品的试用版,它通过https提供API。目前在我的asp.net mvc web应用程序中,我正在执行以下操作来执行对该产品试用版的API调用:-
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(RackJoin rj, FormCollection formValues)
{
string controllername = RouteData.Values["controller"].ToString();
if (ModelState.IsValid)
{
var message = "";
var status = "";
long assetid = new long();
XmlDocument doc = new XmlDocument();
using (var client = new WebClient())
{
var query = HttpUtility.ParseQueryString(string.Empty);
foreach (string key in formValues)
{
query[key] = this.Request.Form[key];
}
query["username"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiUserName"];
query["password"] = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiPassword"];
string apiurl = "https://win-spdev:8400/servlets/AssetServlet";
//code goes here…..
var url = new UriBuilder(apiurl);
url.Query = query.ToString();
但我会得到下面的Security.Authentication.AuthenticationException
,异常:-
出现错误:系统。安全性。身份验证。AuthenticationException:根据验证过程,远程证书无效。
位于System.Net.Security.SslState.的StartSendAuthResetSignal(协议令牌消息、异步协议请求异步请求、异常异常)位于System.Net.Security.SslState.的CheckCompletionBeforeNextReceive(协议令牌消息、异步协议请求异步请求)位于System.Net.Security.SslState.的StartSendBlob(字节[]传入、...
请记住,如果我直接从Web浏览器调用API,则调用API不会出现任何问题,如下所示:-
https://win-spdev:8400/servlets/AssetServlet?username=tmsservice&password=test2test2&assetType=Rack&operation=UpdateAsset&assetName=rack9090909858585&accountName=GROUP&siteName=test%20site&productName=rackproductone
那么这个问题是否与API是基于https的有关,既然我在开发机器中使用的是产品的试用版,我是否应该安装有效的证书?或者这个问题与安全认证无关?谢谢
2条答案
按热度按时间qcuzuvrc1#
问题是你没有配置一个有效的SSL证书。由于有效的SSL证书需要花钱,出于开发的目的,我猜你使用了一个自动签名的证书。你可以通过设置
Application_Start
中的ServerCertificateValidationCallback
静态属性来忽略这些错误:注意:请避免在生产中执行此操作。在LIVE上部署时,请确保使用有效的SSL证书。
9lowa7mx2#
向Darin Dimitrov点头致意...... VB.NET用户可以使用此代码(在我的Web应用程序的Global.asax.vb中):