WebGL版本的HTTP 500内部服务器错误

问题描述 投票:-1回答:1

我有自己的带有Entity Framework的ASP.net Web API 2服务器,该服务器托管在Azure上。它从Azure连接数据库,并为GET和POST请求创建控制器。还创建了DTO。 Unity上还有一个应用程序,该应用程序连接到服务器,并以各种情况的日志形式向他发送请求。在独立版本中,一切正常,但是,如果在WebGL版本中执行此操作,然后将其扔到主机上,则会出现错误(500内部服务器错误)。而且我不知道可能是什么问题

在服务器上获取:

[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.Web.Http.Cors.EnableCorsAttribute.ValidateOrigins(IList`1起源)\ r \ n位于System.Web.Http.Cors.EnableCorsAttribute.GetCorsPolicyAsync(HttpRequestMessage请求,CancellationToken为“ System.InvalidOperationException”,“ StackTrace”:“ cancelToken)\ r \ n在System.Web.Http.Cors.CorsMessageHandler.d__8.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__5.MoveNext() r \ n--从之前抛出异常的位置开始的堆栈结束跟踪--- \ r \ n位于System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\ r \ na t System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\ r \ n位于System.Web.Http.Cors.CorsMessageHandler.d__4.MoveNext()“}

c# unity3d asp.net-web-api unity-webgl
1个回答
0
投票

指定CROS时错误在错误的地址中

var cors = new EnableCorsAttribute("https://newlogsserverapi20200402121056.azurewebsites.net", "*", "*");
        config.EnableCors(cors);
© www.soinside.com 2019 - 2024. All rights reserved.