C# WebGL版本中的HTTP 500内部服务器错误
我有自己的ASP.net Web API 2服务器和实体框架,托管在Azure上。它从Azure连接数据库,并为GET和POST请求创建控制器。还创建了DTO。Unity上还有一个应用程序,它连接到服务器并以日志的形式向他发送关于各种情况的请求。在独立版本中,一切正常,但如果在WebGL版本中执行此操作,并将其放到主机上,则会出现(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
[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);
这是我以前遇到的一个问题,我希望这能帮助任何有类似困境的人。以下是一个视频,演示了一种简单但有效的方法来缩小游戏项目的规模:
[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);