Внутренняя ошибка сервера HTTP 500 в версии WebGL - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть собственный ASP. net сервер Web API 2 с Entity Framework, который расположен на Azure. Он связывает базу данных с Azure и создает контроллеры для запросов GET и POST. DTOs также были созданы. Есть также приложение на Unity, которое подключается к серверу и отправляет ему запросы в виде журналов о различных условиях. В автономной версии все работает нормально, но если вы делаете это в версии WebGL и выбрасываете ее на хостинг, это дает (500 внутренняя ошибка сервера). И я не знаю, в чем может быть проблема

GET на сервере:

[ResponseType(typeof(Rooms))]
    public IHttpActionResult GetRoom(string id)
    {
        Rooms room = db.Rooms.Where(r => r.RoomName == id).FirstOrDefault();
        var roomdto = new RoomDto(room);
        if (roomdto == null)
        {
            return NotFound();
        }

        return Ok(roomdto);
    }

Пример DTO:

    public class RoomDto
{
    public int IDRoom { get; set; }
    public string RoomName { get; set; }

    public RoomDto(Rooms entity)
    {
        IDRoom = entity.IDRoom;
        RoomName = entity.RoomName;
    }
}

Моя БД:

   public partial class LogsDBModel : DbContext
{
    public LogsDBModel()
        : base("name=DBModel")
    {
    }

    public virtual DbSet<Ball> Ball { get; set; }
    public virtual DbSet<DirectionVector> DirectionVector { get; set; }
    public virtual DbSet<GameTime> GameTime { get; set; }
    public virtual DbSet<Impact> Impact { get; set; }
    public virtual DbSet<Players> Players { get; set; }
    public virtual DbSet<Rooms> Rooms { get; set; }
    public virtual DbSet<database_firewall_rules> database_firewall_rules { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<GameTime>()
            .HasMany(e => e.Ball)
            .WithOptional(e => e.GameTime)
            .WillCascadeOnDelete();

        modelBuilder.Entity<Players>()
            .Property(e => e.PlayerName)
            .IsFixedLength();

        modelBuilder.Entity<Rooms>()
            .Property(e => e.RoomName)
            .IsFixedLength();

        modelBuilder.Entity<Rooms>()
            .HasMany(e => e.GameTime)
            .WithOptional(e => e.Rooms)
            .WillCascadeOnDelete();

        modelBuilder.Entity<Rooms>()
            .HasMany(e => e.Players1)
            .WithOptional(e => e.Rooms)
            .WillCascadeOnDelete();

        modelBuilder.Entity<database_firewall_rules>()
            .Property(e => e.start_ip_address)
            .IsUnicode(false);

        modelBuilder.Entity<database_firewall_rules>()
            .Property(e => e.end_ip_address)
            .IsUnicode(false);
    }
}

Получение от Unity:

     public IEnumerator GetRequest(string uri)
    {
        using (UnityWebRequest webRequest = UnityWebRequest.Get(Host + uri))
        {
            yield return webRequest.SendWebRequest();
            response = webRequest.downloadHandler.text;
        }
    }
    public IEnumerator GetID(string entity, string identify)
{
    yield return StartCoroutine(GetRequest(entity + identify));
    switch(entity)
    {
        case "Rooms/":
            Rooms room = Rooms.CreateFromJSON(response);
            ID = room.IDRoom;
            break;
        case "Players/":
            Players player = Players.CreateFromJSON(response);
            ID = player.IDPlayer;
            break;
        case "DirectionVectors/":
            DirectionVectors dv = DirectionVectors.CreateFromJSON(response);
            ID = dv.IDDirectionVector;
            break;
        case "GameTimes/":
            GameTimes gt = GameTimes.CreateFromJSON(response);
            ID = gt.IDGameTime;
            break;
    }
}

Json:

[System.Serializable]
public class Rooms
{
    public int IDRoom;
    [System.NonSerialized]
    public string RoomName;
    public static Rooms CreateFromJSON(string jsonString)
    {
        return JsonUtility.FromJson<Rooms>(jsonString);
    }
}

{"Message": "Произошла ошибка.", "ExceptionMessage": "Указанный источник политики 'https://newlogsserverapi20200402121056.azurewebsites.net/' недопустим. Он не должен содержать путь, запрос или фрагмент.", "ExceptionType": "System.InvalidOperationException", "StackTrace": "at System .Web.Http.Cors.EnableCorsAttribute.ValidateOrigins (происхождение IList`1) \ r \ n в System.Web.Http.Cors.EnableCorsAttribute.GetCorsPolicyAsyn c (системный запрос HttpRequestMessage \ запрос отмены \ Token \ noken) .Http.Cors.CorsMessageHandler.d__8.MoveNext () \ r \ n --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи ) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача) \ r \ n в Системе m.Web.Http.Cors.CorsMessageHandler.d__5.MoveNext () \ r \ n --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Задача задачи) \ r \ n в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задачи) \ r \ n в System.Web.Http.Cors.CorsMessageHandler.d__4.MoveNext () "}

1 Ответ

0 голосов
/ 02 апреля 2020

ошибка указана не по адресу при указании CROS

var cors = new EnableCorsAttribute("https://newlogsserverapi20200402121056.azurewebsites.net", "*", "*");
        config.EnableCors(cors);
...