ASP.NET MVC 应用程序部署问题
Problem with ASP.NET MVC application deployment
我目前正在部署我的 ASP.NET MVC5 项目。我已经部署了项目文件,但我猜我在数据库方面遇到了一些问题。我执行了以下步骤来部署数据库:
Update-database -script in Visual Studio 获取本地数据库的 SQL 脚本(我是通过代码优先开发的)
连接到我在托管面板中创建的 SQL 服务器数据库。
运行我在1.
中生成的脚本
将我的 web.config
中的连接字符串更改为:
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=xxxxxx.xxxwebix.xx,2401;Initial Catalog=xxxxx;User ID=xxxxx;Password=xxxxx"
providerName=".NET Framework Data Provider for SQL Server"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>
所以基本上我用我用来连接数据库到 运行 脚本的相同凭据填写了它。
很遗憾,我无法注册或登录。我得到一个错误
An error occurred while processing your request.
500 (Internal Server Error)
在控制台中,并没有准确说明问题所在。所以基本上,我知道问题可能与数据库有关,但我不知道出了什么问题以及如何摆脱它。这是我的网站(也许会有所帮助):
http://gymmanager.bartoszchodyla.pl.hostingasp.pl/
如有任何帮助,我将不胜感激。
编辑
我发现了问题 - providerName。这很奇怪,因为我在 Visual Studio 中连接到它后从数据库属性中获取了它。我将其更改为默认的“System.Data.SqlClient”并且它起作用了。有人知道为什么吗?
这里可能会发生很多事情。它抛出 500 错误的事实意味着某些代码导致了重大错误 and/or 你没有打开友好错误。
您可以采取一些措施来准确找出问题所在。在您的控制台中,确保友好错误已打开,您应该会获得更多信息。您还可以将 try ... catches 添加到您认为问题所在的位置并避免异常并改为编写消息(这相当粗糙,但快速且简单)。打开跟踪也可以工作,只要您实际上可以在没有 500 的情况下启动应用程序。您在每个例程前后添加跟踪语句,然后检查跟踪文件。可以通过写入文件以更粗略的方式完成同样的操作。这个方法的用处是可以随意开启关闭trace。
如果您以正确的方式创建 SQL 脚本,那么您首先使用代码这一事实并不重要。当你 运行 它时,只要它工作(创建并可能种子?),你就有正确的模式。
那么,应用程序是预先抛出错误还是仅在访问数据时抛出错误?如果是后者,你就有了一个开始寻找错误的好地方。
顺便说一句,您可以通过更改本地连接字符串来针对您的提供商数据库进行本地测试。这将取决于是否打开某些端口,如果不是出于安全原因,您甚至可以这样做。然后您可以在本地调试异常。
我目前正在部署我的 ASP.NET MVC5 项目。我已经部署了项目文件,但我猜我在数据库方面遇到了一些问题。我执行了以下步骤来部署数据库:
Update-database -script in Visual Studio 获取本地数据库的 SQL 脚本(我是通过代码优先开发的)
连接到我在托管面板中创建的 SQL 服务器数据库。
运行我在1.
中生成的脚本将我的
web.config
中的连接字符串更改为:<connectionStrings> <add name="DefaultConnection" connectionString="Data Source=xxxxxx.xxxwebix.xx,2401;Initial Catalog=xxxxx;User ID=xxxxx;Password=xxxxx" providerName=".NET Framework Data Provider for SQL Server" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> </connectionStrings>
所以基本上我用我用来连接数据库到 运行 脚本的相同凭据填写了它。
很遗憾,我无法注册或登录。我得到一个错误
An error occurred while processing your request.
500 (Internal Server Error)
在控制台中,并没有准确说明问题所在。所以基本上,我知道问题可能与数据库有关,但我不知道出了什么问题以及如何摆脱它。这是我的网站(也许会有所帮助): http://gymmanager.bartoszchodyla.pl.hostingasp.pl/
如有任何帮助,我将不胜感激。
编辑 我发现了问题 - providerName。这很奇怪,因为我在 Visual Studio 中连接到它后从数据库属性中获取了它。我将其更改为默认的“System.Data.SqlClient”并且它起作用了。有人知道为什么吗?
这里可能会发生很多事情。它抛出 500 错误的事实意味着某些代码导致了重大错误 and/or 你没有打开友好错误。
您可以采取一些措施来准确找出问题所在。在您的控制台中,确保友好错误已打开,您应该会获得更多信息。您还可以将 try ... catches 添加到您认为问题所在的位置并避免异常并改为编写消息(这相当粗糙,但快速且简单)。打开跟踪也可以工作,只要您实际上可以在没有 500 的情况下启动应用程序。您在每个例程前后添加跟踪语句,然后检查跟踪文件。可以通过写入文件以更粗略的方式完成同样的操作。这个方法的用处是可以随意开启关闭trace。
如果您以正确的方式创建 SQL 脚本,那么您首先使用代码这一事实并不重要。当你 运行 它时,只要它工作(创建并可能种子?),你就有正确的模式。
那么,应用程序是预先抛出错误还是仅在访问数据时抛出错误?如果是后者,你就有了一个开始寻找错误的好地方。
顺便说一句,您可以通过更改本地连接字符串来针对您的提供商数据库进行本地测试。这将取决于是否打开某些端口,如果不是出于安全原因,您甚至可以这样做。然后您可以在本地调试异常。