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

C# WebGL版本中的HTTP 500内部服务器错误,c#,unity3d,asp.net-web-api,unity-webgl,C#,Unity3d,Asp.net Web Api,Unity Webgl,我有自己的ASP.net Web API 2服务器和实体框架,托管在Azure上。它从Azure连接数据库,并为GET和POST请求创建控制器。还创建了DTO。Unity上还有一个应用程序,它连接到服务器并以日志的形式向他发送关于各种情况的请求。在独立版本中,一切正常,但如果在WebGL版本中执行此操作,并将其放到主机上,则会出现(500内部服务器错误)。我不知道会有什么问题 进入服务器: [ResponseType(typeof(Rooms))] public IHttpActionR

我有自己的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);
    }
}
Json:

[System.Serializable]
公共教室
{
公共休息室;
[系统非串行化]
公共字符串名称;
公共静态文件室CreateFromJSON(字符串jsonString)
{
返回JsonUtility.FromJson(jsonString);
}
}
{“Message”:“出现错误。”,“ExceptionMessage”:“指定的策略源代码“”无效。它不能包含路径、查询或片段。”,“ExceptionType”:“System.InvalidOperationException”,“StackTrace”:“at System.Web.Http.Cors.EnableCorsAttribute.ValidateOrigins(IList`1源代码)”\r\n位于System.Web.Http.Cors.EnableCorsAttribute.GetCorsPolicyAsync(HttpRequestMessage请求,CancellationToken CancellationToken)\r\n位于System.Web.Http.Cors.CorsMessageHandler.d_u8.MoveNext()\r\n---从引发异常的上一个位置开始的堆栈结束跟踪----\r\n在System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务任务任务)\r\n在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务任务任务)\r\n在System.Web.Http.Cors.CorsMessageHandler.d_5.MoveNext()\r\n---从引发异常的上一个位置开始的堆栈结束跟踪----\r\n在System.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务任务)\r\n在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务任务)\r\n在System.Web.Http.Cors.CorsMessageHandler.d_u4.MoveNext()“}


指定CRO时,错误出现在错误的地址中

var cors = new EnableCorsAttribute("https://newlogsserverapi20200402121056.azurewebsites.net", "*", "*");
        config.EnableCors(cors);
  • 您的WebGL构建文件可能太大。(这意味着您的游戏项目太大)要验证是否存在这种情况,请将 您在此页面上的zip文件:(最大 大小为100MB)

  • 要访问上传游戏网页,请转到play.unity.com并按下 在导航栏上看起来像这样:


  • 下面是一段视频,演示了一种简单但有效的缩小游戏项目规模的方法:youtu.be/7O21c8BzEzM


  • 这是我以前遇到的一个问题,我希望这能帮助任何有类似困境的人。

    以下是一个视频,演示了一种简单但有效的方法来缩小游戏项目的规模:
    [System.Serializable]
    public class Rooms
    {
        public int IDRoom;
        [System.NonSerialized]
        public string RoomName;
        public static Rooms CreateFromJSON(string jsonString)
        {
            return JsonUtility.FromJson<Rooms>(jsonString);
        }
    }
    
    var cors = new EnableCorsAttribute("https://newlogsserverapi20200402121056.azurewebsites.net", "*", "*");
            config.EnableCors(cors);