我有一个WCF Web服务网站,Web服务库,而且我有一个使用Fluent nHibernate的Domain项目。
当我运行WCF项目并运行调用Web服务时,它工作正常,只要它不是访问数据库的服务。
如果我调用访问数据库的Web服务,我总是会收到错误:
_sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(@"Server=MYSERVER;database=MYDATABASE;Trusted_Connection=true;")
.ShowSql()
)
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<WhygoDomain.Location>())
.ExposeConfiguration(cfg => new SchemaExport(cfg)
/* .Create(true, true)*/)
.BuildSessionFactory();
其中说: 创建SessionFactory时使用了无效或不完整的配置。检查PotentialReasons集合,以及InnerException以获取更多详细信息。
内部例外说: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:TCP提供者,错误:0 - 无法建立连接,因为目标计算机主动拒绝它。)
如果我执行以下操作,则不会收到此消息: 1)右键单击webservice.svc并复制“在浏览器中查看”链接。 2)(在WCF测试客户端中)右键单击“我的服务项目” - &gt; “添加服务”并粘贴上面1)中的网址
我一直在这样工作一段时间,但它有点慢,这意味着我无法调试,这是不可接受的。
这里发生了什么? 这似乎是连接到数据库的权限问题,但我对大部分内容都是新手,所以它可能是其他内容。
我已尝试向我能想到的任何用户授予数据库权限,但没有任何更改。 WCF测试客户端使用什么用户,有人知道吗?
此问题的结果是我无法调试我的Web服务,这对我来说是一个问题。我想我可以尝试附加到进程或其他东西,但这并不理想,因为我有大量的Web服务工作。
答案 0 :(得分:1)
检查您的服务是否在完全信任的IIS中运行。 OLEDB或ODBC仅在IIS下完全信任,即使您可以在C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config中修改文件web_mediumtrust.config,也可以添加SecurityClasses部分:
<SecurityClass Name="OleDbPermission" Description="System.Data.OleDb.OleDbPermission, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<SecurityClass Name="OdbcPermission" Description="System.Data.OleDb.OdbcPermission, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
答案 1 :(得分:0)
连接字符串是否设置为Windows身份验证?如果是这样,请将其设置为SQL Server身份验证,并查看它是否仍然可以在本地测试它。还要检查数据库是否已设置为同时使用Windows身份验证和SQL Server身份验证。