首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebAPI : 403禁止发布网站

WebAPI : 403禁止发布网站
EN

Stack Overflow用户
提问于 2015-05-26 09:21:55
回答 1查看 8.2K关注 0票数 5

好的,我很难找到这个问题,因为它在本地工作,但是在发布之后,结果很简单:

错误代码: 403禁止。服务器拒绝指定的统一资源定位器(URL)。与服务器管理员联系。(12202)

守则:

代码语言:javascript
复制
[RoutePrefix("api/v1/project")]
public class ProjectController : BaseApiController
{
    [HttpGet]
    public HttpResponseMessage GetProjects()
    {
        HttpResponseMessage resp = new HttpResponseMessage(HttpStatusCode.OK);
        if(User.Identity.IsAuthenticated)
        {
            var model = new ModelFactory().CreateProjects();
            resp = Request.CreateResponse(HttpStatusCode.OK, model);
        }
        return resp;
    }
}
代码语言:javascript
复制
public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // all actions under /project routes require authentication
        config.Routes.MapHttpRoute(
            name: "ProjectApi",
            routeTemplate: "api/v1/{controller}/{action}/{apikey}",
            defaults: new { apikey = RouteParameter.Optional },
            constraints: new { controller = "project" },
            handler: new BasicAuthHandler(config));

        // all routes requires an api key
        config.MessageHandlers.Add(new ApiKeyHandler());
        config.MapHttpAttributeRoutes();
    }
}

我从网络上尝试过几种“解决方案”,但似乎没有一种解决方案能解决这个问题。我补充了:

代码语言:javascript
复制
// Stop IIS/Asp.Net breaking our routes
RouteTable.Routes.RouteExistingFiles = true;

来自:http://www.grumpydev.com/2013/09/17/403-14-error-when-trying-to-access-a-webapi-route/

并确保:

代码语言:javascript
复制
<modules runAllManagedModulesForAllRequests="true">

有了上面的代码,使用下面的链接将提供一个成功的连接,在这里它检查(以正确的顺序) APIkey (ApiKeyHandler),检查用户是否需要登录(BasicAuthHandler),然后转到控制器中的方法({ controller }/{action})。

代码语言:javascript
复制
// THIS WORKS!
http://localhost:51077/api/v1/project/getprojects?apikey=123456

然后我们做一个发布,并尝试同样的事情

代码语言:javascript
复制
// This is haunted with number 403
http://website.com/api/v1/project/getprojects?apikey=123456

给出错误代码: 403禁忌。

我毫无头绪。我甚至尝试将“网络服务”的整个发布文件夹的安全设置更改为完全访问。没有变化。

如果你还需要情报就告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 10:38:01

名为web服务器机器的家伙,他们有防火墙阻止传入的webapi呼叫并进行身份验证。它现在的工作方式是:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30454519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档