作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 WCF 数据服务(ADO.NET 数据服务)。我有一个指向 AdventureWorks 数据库的 Entity Framework 模型。
当我从 Visual Studio 中调试我的 svc 文件时,它工作得很好。我可以说/awservice.svc/Customers 并取回我期望的 ATOM 提要。
如果我将服务(托管在 ASP.NET Web 应用程序中)发布到 IIS7,相同的查询字符串将返回 500 错误。根 svc 页面本身按预期工作并成功返回 ATOM。/Customers 路径失败。
这是我的授权在 svc 文件中的样子:
public class AWService : DataService<AWEntities>
{
public static void InitializeService( DataServiceConfiguration config )
{
config.SetEntitySetAccessRule( "*", EntitySetRights.All );
config.SetServiceOperationAccessRule( "*", ServiceOperationRights.All );
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
更新:我启用了详细错误并在 XML 消息中得到以下内容:
<innererror>
<message>The underlying provider failed on Open.</message>
<type>System.Data.EntityException</type>
<stacktrace>
at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(
...
...
<internalexception>
<message>
Login failed for user 'IIS APPPOOL\DefaultAppPool'.
</message>
<type>System.Data.SqlClient.SqlException</type>
<stacktrace>
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, ...
最佳答案
在我看来,这是一个 SQL 身份验证错误,IIS 在无权访问您的 SQL 服务器的用户下运行其 appPool,当您在 Visual Studio(本地)中崩溃时,它将是另一个用户。检查服务器上的 IIS 正在使用的用户,并确保它有权在 SQL 中执行您想要的操作。
关于c# - 如何在 IIS 中正确托管连接到 SQLServer 的 WCF 数据服务?为什么我会收到错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2729131/
我是一名优秀的程序员,十分优秀!