C# Azure上的Web API重定向表示资源不可用

C# Azure上的Web API重定向表示资源不可用,c#,azure,asp.net-web-api,asp.net-core,C#,Azure,Asp.net Web Api,Asp.net Core,我有一个web api,用户在其中发送一个令牌,其中包含他/她的电子邮件和用户需要重定向到的url。当我在localhost上测试它时,它工作得很好,但每当我在Azure中托管它时,它都会给我以下消息: 您正在查找的资源已被删除、名称已更改或暂时不可用 我对Azure和.NETAPI处理重定向方法的方式非常陌生 以下链接 myapi.azurewebsites.net/api/mail/track/click/verylongtoken 具有以下代码 [HttpGet("track/cl

我有一个web api,用户在其中发送一个令牌,其中包含他/她的电子邮件和用户需要重定向到的url。当我在localhost上测试它时,它工作得很好,但每当我在Azure中托管它时,它都会给我以下消息:

您正在查找的资源已被删除、名称已更改或暂时不可用

我对Azure和.NETAPI处理重定向方法的方式非常陌生

以下链接

myapi.azurewebsites.net/api/mail/track/click/verylongtoken

具有以下代码

    [HttpGet("track/click/{token}")]
    public async Task<IActionResult> TrackClick(string token)
    {
        var stat = await _context.Stats.SingleOrDefaultAsync(s => s.Datum == DateTime.Today);
        var _token = await _context.TrackingToken.SingleOrDefaultAsync(tt => tt.Token == token);

        GeneratedToken decoded = new GeneratedToken();
        decoded = JsonConvert.DeserializeObject<GeneratedToken>(hasher.DecodeHash(token));

        if (_token != null)
        {
            if (stat == null)
            {
                Stats _stat = new Stats();
                _stat.Datum = DateTime.Today;
                _stat.Geopend = 0;
                _stat.Geklikt = 0;
                _stat.Verstuurd = 0;

                _context.Stats.Add(_stat);
                await _context.SaveChangesAsync();

                stat = await _context.Stats.SingleOrDefaultAsync(s => s.Datum == DateTime.Today);
            }

            stat.Geklikt++;

            _context.TrackingToken.Remove(_token);
            _context.Entry(stat).State = EntityState.Modified;
            await _context.SaveChangesAsync();
        }

        return Redirect("http://"+decoded.link);
    }
[HttpGet(“跟踪/单击/{token}”)]
公共异步任务TrackClick(字符串标记)
{
var stat=wait_context.Stats.SingleOrDefaultAsync(s=>s.Datum==DateTime.Today);
var\u token=wait\u context.TrackingToken.SingleOrDefaultAsync(tt=>tt.token==token);
GeneratedToken decoded=新GeneratedToken();
decoded=JsonConvert.DeserializeObject(hasher.DecodeHash(token));
如果(_标记!=null)
{
如果(stat==null)
{
统计数据_stat=新统计数据();
_统计数据=日期时间。今天;
_统计Geopend=0;
_统计Geklikt=0;
_统计值Verstuurd=0;
_context.Stats.Add(_stat);
wait_context.SaveChangesAsync();
stat=wait_context.Stats.SingleOrDefaultAsync(s=>s.Datum==DateTime.Today);
}
stat.Geklikt++;
_context.TrackingToken.Remove(_标记);
_context.Entry(stat.State=EntityState.Modified;
wait_context.SaveChangesAsync();
}
返回重定向(“http://”+decoded.link);
}
正如您所看到的,在第一次请求之后,我也在删除令牌。我知道这可能会导致问题,但当我使用新的未使用令牌时,问题也会发生。该代码在localhost上运行良好,但我怀疑Azure正在阻止此请求

邮递员也没有给我更详细的信息


有人能帮我吗?

我有同样的问题,但我已经解决了:

  • 我使用CORS来防止跨域错误(参见chrome上的F12)和 在Azure应用程序服务的CORS部分添加允许的地址(添加“*” 如果您在应用程序中使用安全令牌)

  • 我有同样的问题,当我 使用VS2017上的“连续交付”部分进行部署。部署 Azure,我首先在Azure上创建Appservice,然后导出Appservice 配置文件,并在发布时将其导入VS2017


有了这些,它就可以正常工作。

您能提供一个示例url链接吗?如果链接是第三方网站,它将始终在azure上工作。已经发布了一个示例url,请不要放心,只需向您提供一个活动的测试url。