GoDaddy经济型Windows主机ASP.NET网站web.config适配Plesk求助
解决Plesk主机上ASP.NET网站web.config配置问题
你的问题太常见了——Visual Studio生成的默认web.config完全是为本地开发环境量身定做的,直接丢到Plesk这类生产主机上肯定会踩坑,我帮你拆解几个必须调整的核心配置:
1. 替换本地数据库连接字符串
你现在用的是LocalDb,这是VS自带的本地测试数据库,Plesk主机根本识别不了,必须换成主机提供的远程SQL Server连接信息:
- 原配置:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-WebSite3-dc1d217f-11d8-4c59-a3eb-70b83e3aa30f;AttachDbFilename=|DataDirectory|\aspnet-WebSite3-dc1d217f-11d8-4c59-a3eb-70b83e3aa30f.mdf;Integrated Security=SSPI" providerName="System.Data.SqlClient"/>
- 修改为Plesk面板里复制的数据库连接串:
<add name="DefaultConnection" connectionString="Data Source=你的数据库服务器地址;Initial Catalog=你的数据库名;User ID=数据库用户名;Password=数据库密码;" providerName="System.Data.SqlClient"/>
划重点:直接去Plesk的数据库管理界面复制完整连接串,别自己手写,避免端口、权限这类低级错误。
2. 关闭调试模式
本地开发开debug="true"没问题,但生产环境不仅影响性能,很多主机还会直接拦截这个配置:
- 原配置:
<compilation debug="true" targetFramework="4.6.2"/>
- 修改为:
<compilation debug="false" targetFramework="4.6.2"/>
3. 调整SessionState存储模式
默认的InProc模式在Plesk的多实例环境下会频繁丢失会话,而且不少主机禁用了这个模式,建议改成SQL Server存储:
- 原配置:
<sessionState mode="InProc" customProvider="DefaultSessionProvider"> <providers> <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection"/> </providers> </sessionState>
- 修改为:
<sessionState mode="SQLServer" sqlConnectionString="和上面DefaultConnection一致的连接串" cookieless="false" timeout="20"/>
如果主机支持
StateServer也可以用,但SQL Server是生产环境最稳定的方案。
4. 补全程序集绑定的缺失属性
你的配置里Microsoft.Owin.Security.Cookies的绑定重定向少了newVersion,这会直接导致程序集加载失败:
- 原配置:
<dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security.Cookies" culture="neutral" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0"/> </dependentAssembly>
- 修改为:
<dependentAssembly> <assemblyIdentity name="Microsoft.Owin.Security.Cookies" culture="neutral" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/> </dependentAssembly>
5. 验证.NET版本兼容性
先确认Plesk主机上已经安装了.NET Framework 4.6.2,如果主机只支持更高版本(比如4.7.2),要同步修改所有targetFramework的值:
<compilation debug="false" targetFramework="4.7.2"/> <httpRuntime targetFramework="4.7.2"/>
改完这些后,把web.config重新上传到网站根目录,再去Plesk面板重启网站,基本就能解决大部分运行问题。如果还是报错,直接看Plesk的「网站日志」,里面会有具体的错误提示(比如程序集缺失、数据库权限不足),再针对性调整就行。
内容的提问来源于stack exchange,提问作者collusionbdbh
相关产品推荐
相关产品推荐

