在IIS 7.5 localhost上部署WCF数据服务/ REST服务

时间:2011-07-26 16:29:16

标签: iis rest odata wcf-data-services

以下是我的问题的详细信息。我有一个简单的WCF数据服务(名为WCFServiceAppCBS.svc),它使用Entity Framework数据访问层与SqlServer 2008 R2数据源通信以返回一些实体。我只是想将一些表暴露为“GET”,稍后在某些html文件中被外部getJSON / AJAX调用所使用。

出于开发目的,当我使用IIS Express在VS2010中使用它时,它可以正常工作,并且可以使用OData URI并返回数据。但是,当我将它部署到localhost IIS 7时,OData服务不会返回任何内容。

我得到的只是列出我的实体的Atom Pub Feed,但是当我尝试执行任何类型的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;
        }
    }
}

感谢您提供的任何帮助!

0 个答案:

没有答案