Вот подробности моей проблемы.У меня есть одна простая служба данных WCF (названная WCFServiceAppCBS.svc), использующая уровень доступа к данным Entity Framework, который обращается к источнику данных SqlServer 2008 R2 для возврата некоторых объектов.Я просто хочу представить несколько таблиц как «GET» для последующего использования внешними вызовами getJSON / AJAX в некоторых html-файлах.
В целях разработки он отлично работает, когда я играю с ним в VS2010 с помощью IIS Express, и может использовать OData URI и возвращать данные.Но служба OData ничего не возвращает, когда я развертываю ее на локальном хосте IIS 7.
Все, что я получаю, это фид Atom Pub, в котором перечислены мои сущности, но когда я пытаюсь выполнить любой тип операторов iQueryable(т. е. http://localhost/WCFServiceAppCBS/OData.svc/officers), Я получаю общее «веб-сайт не может отобразить страницу».
Я не уверен, что у него проблемы с аутентификацией или есть другие настройки в моем Web.Configили IIS, который мне не хватает.
Вот мой web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true" />
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
<connectionStrings>
<add name="CBSEntities" connectionString="metadata=res://*/CBSLookup.csdl|res://*/CBSLookup.ssdl|res://*/CBSLookup.msl;provider=System.Data.SqlClient;provider connection string="data source=QCSQL2K8DEV;initial catalog=CBS;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
Вот мой OData.svc.cs ...
using System;
using System.Collections.Generic;
using System.Data.Services;
using System.Data.Services.Common;
using System.Linq;
using System.ServiceModel.Web;
using System.Web;
namespace WCFServiceAppCBS
{
public class OData : DataService<CBSEntities>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
// config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
}
Спасибо залюбая помощь, которую вы можете оказать!