gpt4 book ai didi

c# - 我的 webrole.cs 似乎找不到连接字符串

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:14 25 4
gpt4 key购买 nike

我有一个基于 Azure/云的项目(仅限单个项目)。它已将 WCF/WebRole 添加到项目中。我的 WCF 服务使用 Entity Framework 与 SQLAzure 数据库进行通信。这工作得很好。

在项目的 web.config 中,我有以下内容:

<connectionStrings>
<add name="CommuteEntities" connectionString="metadata=res://*/Db.CommuteDataModel.csdl|res://*/Db.CommuteDataModel.ssdl|res://*/Db.CommuteDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=<db-here>.database.windows.net;initial catalog=dandr;persist security info=True;user id=<user-id-here>;password=<password-here>;multipleactiveresultsets=True;App=EntityFramework&quot; " providerName="System.Data.EntityClient" />
</connectionStrings>

到目前为止一切都很好。所以我想做少量的预定后台处理(基于计时器而不是传入请求)。它的任务太小,不足以证明为该工作启动 WorkerRole 是合理的。

因此,我在 WebRole 项目中创建了如下内容 WebRole.cs

public override void Run()
{
while (true)
{
//This is for debug purposes:
string str = ConfigurationManager.ConnectionStrings["CommuteEntities"].ToString();

BackgroundProcessing.BackgroundProcessing.BackgroundProcess();
Thread.Sleep(150000); //2.5mins
}
}

由于某种原因,获取连接字符串的行似乎不起作用。然而,将相同的代码放入 WCF 服务中效果非常好。

需要强调的是,此解决方案中只有一个项目,并且 WebRole.cs 与正在运行的 WCF 服务位于同一项目中。

注意:获取连接字符串仅用于调试目的。我遇到的根本问题是,当我的 WebRole.cs 尝试访问实体时,它会收到以下异常消息:

在配置中找不到指定的命名连接、不适合与 EntityClient 提供程序一起使用或无效。

注释 2::我刚刚注意到,我的 WebRole.cs 中的任何内容都看不到 WebRole.cs 中配置的任何内容>Web.config 文件。我是否有什么做得不正确或误解的地方?

有人以前遇到过这个问题或者有什么想法吗?

最佳答案

看起来我犯了以下错误:Azure web role process not loading web.config?

从这个答案:

@stevemarx 来自个人通信 - “webrole.cs 中的代码与 IIS 下的 Web 应用程序运行在不同的进程中,虽然您当然应该能够打开 web.config 并读取它(它只是当前目录),.NET 不会对其中的 web.config 执行任何特殊操作。(这就像将一个名为 web.config 的文件放在与您正在运行的控制台应用程序相同的目录中。)”

所以不,webrole.cs 进程中的代码不会加载我的 web.config。

这里有更多信息:

http://laorient.blogspot.com/2011/06/windows-azure-webrolecs-is-not-running.html

关于c# - 我的 webrole.cs 似乎找不到连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9850368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com