我遵循微软网站上的WingtipToys教程,该教程基本上是ASP.NET的教程,展示了它可以做的许多功能,等等。
我在教程期间创建了自己的数据库,并在本地计算机上完美运行。然后,我决定将其发布到Azure以使其正常在线工作,这是我的问题开始的地方。
首先,我在Azure中创建了一个SQL数据库并移动了我的数据库。我可以在Visual Studio中连接到这个Azure数据库,并且可以验证所有正确的表都在那里,每个表都填充了数据;
下一步是更新我的连接字符串,这是当前的;
<connectionStrings>
<add name="WingtipTpys" providerName="System.Data.SqlClient" connectionString="Server=tcp:xxxx.database.windows.net,1433;Database=xxxx;Integrated Security=False;User Id=xxx;Password=xxxx;Encrypt=True;TrustServerCertificate=False;MultipleActiveResultSets=True" />
</connectionStrings>
现在,我在这个阶段的印象是数据库和网站现在可以相互通信,所以我发布了网站以查看它的外观,这是真正令人困惑的部分(对我而言)发生的地方。
当我访问我发布的网站网址(http://completebusiness2017.azurewebsites.net/)时,它会使用正确的母版页,并且about和contact页面都是它们应该是的。但是,它正在从;
中提取数据ProductDatabaseInitializer
Class,包含诸如
之类的代码 private static List<Product> GetProducts()
{
var products = new List<Product> {
new Product
{
ProductID = 1,
ProductName = "TEST",
Description = "This convertible car is fast! The engine is powered by a neutrino based battery (not included)." +
"Power it up and let it go!",
ImagePath="",
UnitPrice = 39.50,
CategoryID = 1
},
new Product
{
ProductID = 2,
ProductName = "Silly Car",
Description = "There's nothing old about this toy car, except it's looks. Compatible with other old toy cars.",
ImagePath="",
UnitPrice = 15.95,
CategoryID = 1
},
这个课一直都在那里,但在我的本地机器上,从未使用过。数据直接来自我创建的数据库。我不明白现在我如何更新连接字符串,它是从这个类中提取数据,而不是我的数据库。另一个奇怪的元素是,当我更新这个类时,所以例如我改变了;
可转换汽车价格从22.50到39.50 和 旧车名到傻车
再次发布网站时,这些不会更新。所以我不知道它在哪里或为什么使用旧数据。
所以我想我的第一个问题是,当我更新ProductDatabaseInitializer类时,为什么在网站再次发布时反映出这些变化?在我查询为什么我的数据库无法正常工作之前,我想我应该理解为什么会发生这种情况。
任何帮助都会非常感激。
谢谢,节日快乐。答案 0 :(得分:1)
我并非100%确信您从您认为自己的位置提取数据。你能验证你的数据库连接字符串吗?
你需要去几个地方看看。首先,在Azure门户中,导航到您的Web App,然后选择&#34;应用程序设置&#34;菜单选项。检查您的&#34;连接字符串&#34;中是否列出了任何内容。部分。
其次,登录地址http://completebusiness2017.scm.azurewebsites.net的SCM网站。登录后,选择Debug Console - &gt; CMD。然后浏览到/ wwwroot文件夹并检查web.config文件内容。检查以确保其中列出的连接字符串也符合您的预期。
请注意,门户网站中列出的应用程序设置连接字符串将优先于您的web.config文件中的内容。查看您希望连接到的数据库是否实际列在这两个位置。
此外,登录您的SCM站点并浏览到/ App_Data目录。看看那里是否有你不希望看到的数据库。