Azure Basic ASP.NET WCF数据服务生成HTTP 500.0

时间:2015-03-11 17:40:45

标签: c# asp.net azure wcf-data-services

首先,我想提前感谢您的建议和指导。我是Microsoft .Net堆栈的新手。

我创建了一个非常简单的WCF服务,该服务托管在Azure网站上,应该为Azure SQL数据源创建端点。

在VS 2013中,我首先为Azure SQL创建了一个ADO.NET EDM点:

namespace WorkOrderIntegration
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;

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

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

        public DbSet<WorkOrder> WorkOrders { get; set; }
    }
}

然后我将[WCF Data Service 5.6]添加到项目中,只对InitializeService方法进行了一些更改:

namespace WorkOrderIntegration
{
    //Added my Entity to the class declaration
    public class WorkOrderService : DataService<WorkOrderEntities>
    {
        public static void InitializeService(DataServiceConfiguration config)
        {
            //Added these next 2 lines
            config.UseVerboseErrors = true;
            config.SetEntitySetAccessRule("*", EntitySetRights.All);

            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
    }
} 

然后我将我的项目发布到Azure托管的website并导航到/WorkOrderService.svc/WorkOrders,我收到HTTP 500.0错误。

一切都很好,我已阅读了几篇使用同一过程取得成功的文章。我们将非常感谢您提供的任何帮助或指导。谢谢。

1 个答案:

答案 0 :(得分:0)

经过几天的挫折和谷歌搜索后,我找到了如下所述的解决方案:

我首先添加了ServerBehavior标志以获取实际错误。

// Added the below line
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
namespace WorkOrderIntegration
{

    public class WorkOrderService : DataService<WorkOrderEntities>
    {
        public static void InitializeService(DataServiceConfiguration config)
        {
            config.UseVerboseErrors = true;
            config.SetEntitySetAccessRule("*", EntitySetRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
    }
}

然后我收到了真正的错误: The exception message is 'Expression of type 'System.Data.Entity.Core.Objects.ObjectContext' cannot be used for return type 'System.Data.Objects.ObjectContext''.

经过一些搜索后,发现此错误是由于尝试在WCF Data Service 5.6之上创建Entity Framework 6+而导致的。因此,this文章中描述的解决方案是在Visual Studio中安装WCF Data Services EntityFramework Provider模块。

进行这些更改后,我不再获得神秘的通用HTTP 500错误。