休息访问SQL Server数据库的WCF

时间:2014-11-29 19:30:02

标签: wcf rest

我有一个访问SQL Server数据库的RESTful WCF服务。使用它我可以在IIS Express上运行时访问数据库,但是当它在本地IIS上运行时,它不会从数据库返回任何内容!

以下是合同中的方法:

[OperationContract]
[WebGet(UriTemplate = "/getdata",
 BodyStyle = WebMessageBodyStyle.WrappedRequest,
 ResponseFormat = WebMessageFormat.Json,
 RequestFormat = WebMessageFormat.Json)]
List<DbData> getData();

这是web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <connectionStrings>
      <add name="AlamalConStr" 
           connectionString="Data Source=.;  Initial Catalog=trial_web_service_db;Integrated Security=True" 
           providerName="System.Data.SqlClient" />
   </connectionStrings>
   <appSettings>
       <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
   </appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Windows" />
<identity impersonate="false" />
</system.web>
<system.serviceModel>
   <services>
       <service name="AlamalBankWCFService.AlamalService">
           <endpoint kind="webHttpEndpoint" contract="ServiceLib.IAlamalService">
              <identity>
                 <dns value="localhost"/>
              </identity>
           </endpoint>
       </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior>
               <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
               <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <protocolMapping>
        <add binding="wsHttpBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
                               multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
   <modules runAllManagedModulesForAllRequests="true" />
   <directoryBrowse enabled="true" />
</system.webServer>
</configuration>

当我在IIS Express上运行此WCF服务时,它会从数据库中返回数据,但是当我在本地IIS上托管并运行它时,它不会从数据库返回数据,只显示带有[]的空白页面!

1 个答案:

答案 0 :(得分:0)

您可能需要检查应用池的用户ID。检查该应用程序池用户ID是否有权连接到SQL Server。将app pool id添加到sql server或更改连接字符串以使用SQL身份验证。即在sql server中创建的用户的连接字符串中使用用户标识和密码。

这里有一些帮助。

http://msdn.microsoft.com/en-us/library/ff648340.aspx