【问题标题】:REST not working on published version, works locallyREST 不适用于已发布版本,可在本地工作
【发布时间】:2021-02-02 17:15:20
【问题描述】:

我在 Azure 中总是有一个工作版本,但不知何故它不再工作了,我复制了数据库并创建了新的连接。当我在 localhost 中运行时一切正常,但是当我发布时它不再起作用,除非我删除 REST 的分析部分

这是我得到的:

    // GET PROGRAM (IF EXIST)
    [Route("api/Program/{ProgramCode}/{id_user}/{id_client}")]
    public object GetProgramSettingsFromFile(string ProgramCode, string id_user, int id_client)
    {

        AnalyticsUser newEntry = new AnalyticsUser
        {
            id_user = id_user,
            ProgramCode = ProgramCode,
            DateTime = DateTime.Now,
            id_client = id_client
        };
        db.AnalyticsUsers.Add(newEntry);
        db.SaveChanges();

        string secondPart = "api/program/" + ProgramCode + ".json";

        var allText = (new WebClient()).DownloadString(uriPath + secondPart);
        object jsonObject = JsonConvert.DeserializeObject(allText);

        return jsonObject;
    }

以上内容在本地主机上运行良好,但在发布时不起作用。错误 500 内部服务器错误。所以当我像这样逃避分析部分时:

    // GET PROGRAM (IF EXIST)
    [Route("api/Program/{ProgramCode}/{id_user}/{id_client}")]
    public object GetProgramSettingsFromFile(string ProgramCode, string id_user, int id_client)
    {

        //AnalyticsUser newEntry = new AnalyticsUser
        //{
        //    id_user = id_user,
        //    ProgramCode = ProgramCode,
        //    DateTime = DateTime.Now,
        //    id_client = id_client
        //};
        //db.AnalyticsUsers.Add(newEntry);
        //db.SaveChanges();

        string secondPart = "api/program/" + ProgramCode + ".json";

        var allText = (new WebClient()).DownloadString(uriPath + secondPart);
        object jsonObject = JsonConvert.DeserializeObject(allText);

        return jsonObject;
    }

它在 localhost 和已发布时运行良好。那么这里发生了什么?我似乎无法在本地复制错误,因为它一切正常。有什么想法吗?

【问题讨论】:

  • 你的数据库初始化了吗?问题不在于休息呼叫,而是将数据保存到您的数据库。检查 connectionString 并查看它是否设置正确并可以访问数据库服务器
  • 500 表示你有异常,可能是连接字符串。

标签: c# azure rest linq


【解决方案1】:

好吧,是 Azure SQL 服务器中的某个东西产生了错误。对于其他可能遇到相同问题的情况,导致连接到数据库的 localhost 工作正常,也使用 webconfig 连接字符串,这意味着发布时有某些东西阻止了它。

在 Azure SQL 数据库防火墙设置中有一个开关:

允许 Azure 服务和资源访问此服务器

这一个必须是(在否)

现在它工作正常(SAVE 分析设置是一个内部连接),这就是为什么 ta 工作正常但被阻止的原因。

【讨论】:

    【解决方案2】:

    因为在本地可以正常运行,所以可以调试或者在项目中找到ConnectionString(appconfig.jsonweb.config文件)。

    检查您的 ConnectionString 并替换生产环境中的 SQL Server 连接字符串。

    你可以configure the strings of the production environment in the configuration file or on the portal

    温馨提示:

    1. 如果你没有azure sql server,只要公网可以访问的sql server也是可以的。

    2. 注意生产环境中数据库的表结构和存储过程或功能必须保持一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      相关资源
      最近更新 更多