【问题标题】:Do you have to publish DefaultConnection containing the membership tables?您是否必须发布包含成员资格表的 DefaultConnection?
【发布时间】:2016-05-11 10:03:27
【问题描述】:

尝试将网站发布到我的主机,其中包含我的自定义数据库和默认数据库,如下所示:

<add name="PortfolioContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Portfolio;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=TestDB;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>

当发布我无法登录的网站时,我认为这是因为没有创建 DefaultConnection 数据库(包含会员用户表),我可能错了吗?我可以在 Management Studio 中为我的自定义数据库生成脚本,但 DefaultConnection 似乎不允许我手动创建关联的表。

我的错误日志显示这个

2016-02-02 12:28:35 W3SVC30 217.194.213.135 GET /登录 ReturnUrl=%2Fdashboard 80 - 95.147.124.217 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/48.0.2564.97+Safari/537.36 - 500 0 0 1198 416 203

虽然我不确定这意味着什么。抱歉,这是我第一次尝试发布网站。谢谢

编辑:

找不到路径“C:\HostingSpaces\hannahha\hannahhamlin.co.uk\wwwroot\Assets\Common\images”的一部分。

这是它显示的错误。这给我带来了一个我知道无论如何我都必须面对的问题。如何包含发布所需的目录?

【问题讨论】:

  • 我的猜测是登录过程设置不正确,通常 get 请求被重定向到网站的登录部分,在登录过程发生后,用户会自动重定向到原始页面。阅读 MVC 登录过程。
  • 在本地运行时完美运行@John
  • 试试这个,在本地运行初始获取请求的跟踪,然后在托管的地方执行相同的操作,回发您在托管环境中看不到的内容。
  • 唯一的区别是我在重定向上得到了 500 的状态码。@John
  • 500 表示服务器端的某些东西运行不正常。可能是安全性,可以找到要加载的类,可以找到正确的重定向逻辑等。下一步是查看 Global ASAX 收到请求时发生的情况,您可以将跟踪点放在那里以查看到底出了什么问题。包括捕获任何错误并将其转储到可读日志中。

标签: c# asp.net asp.net-mvc deployment server


【解决方案1】:

首先,这不是错误日志。这是 IIS 的默认请求日志。它告诉你的只是一个使用特定浏览器的客户端通过 GET 请求/Login。换句话说,对这个问题没有任何用处。

您需要一个真正的 错误,并带有堆栈跟踪。您可以暂时关闭自定义错误(Web.config 中的&lt;customErrors mode="Off" /&gt;),安装类似Elmah 的东西来为您记录错误,或者使用remote debugging

但是,连接字符串很可能只能在本地工作,而您看到的错误只是数据库连接错误。您在开发中使用的连接字符串很少会与生产所需的完全匹配,因此您应该在发布时使用config transforms 来更改它。

这当然是假设您甚至在生产环境中设置了一个数据库服务器来连接。 Visual Studio 使用了大量的数据库魔法,让您可以专注于代码,而不是像连接数据库这样的琐碎实现细节。但是,当您上线时,辅助轮已关闭,您有责任确保所有必要的东西都已连接好。如果您没有数据库服务器,请安装一个。如果您没有数据库,请创建一个。然后,只需更改您的连接字符串以连接到它。

更新

到目前为止,该错误消息已从最初的问题中删除,我认为最好通过创建一个新问题并删除该问题来为您服务。

也就是说,我不确定您到底想要实现什么,但是您的项目目录下的任何内容都将与您的网站一起发布(除了某些特殊目录,如 App_Data)。如果您引用的文件位于项目目录之外的某个目录中,则它们将包含在内,并且实际上没有办法包含它们。但是,您可以创建一个构建操作,将文件复制到项目下的某个位置,然后应该发布它们。

【讨论】:

  • 在 web.release.config 我改为使用服务器数据源
  • 那么,你肯定需要一个堆栈跟踪来正确诊断发生了什么。使用我在回答中描述的一种方法来查看实际错误,然后编辑您的问题以包含异常和堆栈跟踪(如果您仍需要帮助)。
  • 在我的原始帖子@ChrisPratt 中包含错误
猜你喜欢
  • 2013-09-15
  • 1970-01-01
  • 1970-01-01
  • 2017-05-30
  • 2023-03-04
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多