我有一个访问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上托管并运行它时,它不会从数据库返回数据,只显示带有[]的空白页面!
答案 0 :(得分:0)
您可能需要检查应用池的用户ID。检查该应用程序池用户ID是否有权连接到SQL Server。将app pool id添加到sql server或更改连接字符串以使用SQL身份验证。即在sql server中创建的用户的连接字符串中使用用户标识和密码。
这里有一些帮助。