Развертывание службы данных WCF / службы REST на локальном хосте IIS 7.5 - PullRequest
1 голос
/ 26 июля 2011

Вот подробности моей проблемы.У меня есть одна простая служба данных 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=&quot;data source=QCSQL2K8DEV;initial catalog=CBS;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" 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;
        }
    }
}

Спасибо залюбая помощь, которую вы можете оказать!

...