从另一台电脑到达.net web api

时间:2016-01-12 11:27:49

标签: javascript c# ajax asp.net-apicontroller

我正在开发一个项目,我需要为客户端提供REST API,它将以JSON格式从数据库返回一些数据。 '现在,这是我的控制器代码:

    [Models.AllowCors]
    public HttpResponseMessage Get(string Id)
    {
        string ClearName = Id.Replace("_", " ");
        IQueryable<Models.User> userQuery =
            from user in Models.TableAccesser.Users_Table where
            user.Name == ClearName
            select user;
        return Request.CreateResponse(HttpStatusCode.OK, userQuery);
    }

我遇到的问题是我只能从与web api运行的同一台PC上访问api。 我可以通过以下链接访问:

     my_ip:54780/users/parameters

如果我使用同一台电脑拨打电话,它可以正常工作,但我无法通过其他电脑拨打电话。我试过在几个方面允许角色,但都没有奏效。我试过了:

  • 在webapiconfig.cs中启用cors:

    var cors = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(cors);
    

它没有工作

  • 然后我尝试在web.config中添加一个新条目:

    <add name="Access-Control-Allow-Origin" value="*"/>
    

这既不起作用

  • 然后我尝试的最后一件事是添加一个函数:

    public class AllowCors : ActionFilterAttribute
    {
    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        if (actionExecutedContext == null)
        {
            throw new ArgumentException("ActionExecutedContext");
        }
        else
        {
            actionExecutedContext.Response.Headers.Remove("Access-Control-Allow-Origin");
            actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
        }
        base.OnActionExecuted(actionExecutedContext);
    }
    }
    

我尝试使用另一台电脑的邮递员和xmlhttprequest,ajax,但都没有用。有一个延迟大约20秒,然后没有,如果我试着写出response.responseText,它只是一个&#34;错误&#34;,仅此而已。

您能否提出任何想法,我可以尝试访问API?此API将在移动应用程序中使用,因此它应该可以处理简单的请求。

感谢您的回复建议。

1 个答案:

答案 0 :(得分:0)

从您的问题来看,您似乎需要在Web API计算机上打开该端口。在您的情况下,您需要打开端口54780

打开您的端口非常容易,这里是Microsoft页面,其中包含如何执行此操作的说明: Open a port in Windows Firewall

  1. 单击“开始”按钮“开始”按钮的图片,然后单击“控制面板”,打开“Windows防火墙”。在搜索框中,键入firewall,然后单击“Windows防火墙”。

  2. 在左侧窗格中,单击“高级设置”。需要管理员权限如果系统提示您输入管理员密码或进行确认,请键入密码或提供确认。

  3. 在“具有高级安全性的Windows防火墙”对话框的左窗格中,单击“入站规则”,然后在右窗格中单击“新建规则”。

  4. 按照新建入站规则向导中的说明操作,并将端口54780添加到您的规则中。

  5. 请注意,如果您使用的是第三方防火墙,例如使用AntiVirus软件,您需要在该应用程序中打开该端口。