如何使用Linq to Sql组件部署ASP.NET网站
我有一个.NET 3.5 Web应用程序,我最近添加了一些Linq to Sql功能 - 一个dbml文件等。在本地,它工作正常。
但是,当我尝试部署它时,我得到一个空引用异常,显然当它试图调用上下文对象的构造函数时。
为了增加复杂性,我使用Web部署项目将其编译为单个DLL。我认为Linq to Sql的东西会和其他所有内容一起编译。但是,现在我认为我需要将dbml文件与DLL一起移动。
我在App_Code目录中有dbml文件,所以我尝试在远程服务器上重新创建该目录结构。但.NET不会让我在预编译的应用程序上有一个App_Code目录。所以我只是将dbml文件移动到根目录中 - 但我仍然得到错误。
救命!
这是我得到的错误的堆栈跟踪:
[NullReferenceException:对象引用未设置为对象的实例。]
codeCS.SarcStateDataDataContext..ctor()+28
DB_Interface.SarcStateDataDB..ctor()+26
eSARC_Basic..ctor()+56
ASP.esarc_basic_aspx..ctor()+14
__ASP.FastObjectFactory_sarcwriting.Create_ASP_esarc_basic_aspx()+20
System.Web.Compilation.BuildResultCompiledType.CreateInstance()+32
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath,Type requiredBaseType,HttpContext context,Boolean allowCrossApp,Boolean noAssert)+119
System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context,String requestType,VirtualPath virtualPath,String physicalPath)+33
System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context,String requestType,VirtualPath virtualPath,String physicalPath)+40
System.Web.HttpApplication.MapHttpHandler(HttpContext context,String requestType,VirtualPath path,String pathTranslated,Boolean useAppConfig)+160
System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()+93
System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+155
DB_Interface.SarcStateDataDB是我编写的一个类,它调用上下文对象的构造函数:
codeCS.SarcStateDataDataContext context = new SarcStateDataDataContext();
我不发送连接字符串或连接对象,因为程序的本地和部署版本都使用相同的远程数据库。但这可能是问题吗?本地应用程序可以访问dbml文件中的连接字符串,但部署的应用程序没有...
更新:我查看了Reflector中的代码,它从web.config获取连接字符串,并且所有内容看起来都很复杂......
没有找到相关结果
已邀请:
3 个回复
瞥同忙接
哩翔购
街茬
中使用它。 然后,您可以在应用程序级别管理连接字符串,可能在您的web.config文件中。这样,如果您切换到使用与prod分开的dev db,则可以轻松转换为单独的连接字符串。