我正在使用asp.net mvc4中的webapi服务为Authenticate用户编写服务, 当用户登录使用Authenticate应该使用的移动应用程序时,此服务用于移动应用程序 发生了,我在这里编写了加密和解密的代码 http://www.codeproject.com/Articles/630986/Cross-Platform-Authentication-With-ASP-NET-Web-API 错误:
出于安全原因需要HTTPS。
显示以下错误。
当在浏览器或小提琴手中检查时,它显示相同的错误。
public static void Register(HttpConfiguration config)
{
TokenInspector tokenInspector = new TokenInspector() { InnerHandler = new
HttpControllerDispatcher(config) };
config.Routes.MapHttpRoute(
name: "Authentication",
routeTemplate: "api/User/{id}",
defaults: new { controller = "User" }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: null,
handler: tokenInspector
);
config.MessageHandlers.Add(new HTTPSGuard());
}
答案 0 :(得分:1)
实际上,我目前正在开发一个项目,该项目受到您提到的相同CodeProject文章的启发,因此我非常熟悉它的工作原理。
您获得的错误只是意味着您需要使用HTTPS(而不是HTTP)来访问您的API。所以,像:https://localhost:port/api/values
。为此,仅使用https作为URI方案是不够的。您需要生成自签名证书(或者如果有可用的话,请使用真实证书),然后将其附加到您的主机 - IIS或自托管有不同的步骤来实现此目的。有各种网站可以帮助您完成这些步骤; this question似乎有一个非常全面的解释。
如果您不关心HTTPS,请从您的代码中删除HTTPSGuard邮件处理程序,并将Register
函数中的最后一行添加到MessageHandlers
管道