2015-05-09 85 views
0

我正在使用C#编写的ASP.NET Web应用程序部署到IIS/Windows Server 2008 R2。应用程序使用NHibernate与在联网的unix服务器上运行的Oracle数据库进行交互。写入数据库似乎没有效果

看来,由应用程序写入数据库写入没有影响。

如果我手动编辑Oracle数据库中的记录值,新值将由应用程序反映出来。但是,如果我尝试使用应用程序的自定义“保存”功能更改值,则更改不会反映在数据库中。看起来读取成功,但写入失败。

为什么写道似乎失败了?

的更多信息:

无明显的错误信息被接收(即应用程序不会抛出异常,似乎继续运行,就好像一切都很好)。

此应用程序的另一个实例正在IIS/Windows Server 2003上运行。此实例可以写入Oracle数据库(即可以在单击“save”后使用数据库查看器立即在数据库中看到更改)。

该代码在2003/2008应用程序中几乎相同。但是,在2008服务器上,我使用的是更新版本的Oracle库,并将Visual Studio项目的架构从'Any CPU'定位到'x86'(2008服务器是64位,而2003服务器是32位)位)。

免责声明:

我有IIS,NHibernate的,Oracle数据库,在Windows Server 2003和Windows Server 2008 R2的工作经验非常有限。但是,我的确有更多的C#,ASP.NET Web应用程序,Visual Studio和MSSQL数据库的使用经验。

+1

谁知道。请显示持久性操作的一些代码。 – OldProgrammer

+2

作为一个纯粹的占卜,听起来像你没有提交交易。 –

+0

在所有应有的尊重下,在2003服务器上运行的应用程序使用与2008服务器上运行的应用程序完全相同的持久性代码,并且写入肯定在2003服务器上运行,所以我不相信这是代码问题(除非因为不同的环境需要书写不同,但对我来说似乎不太可能)。如果我对此有错,请纠正我。 – yohosuff

回答

0

我解决了它。

原来其中一个HttpModules没有被初始化。这是因为web.config文件被调整为IIS6,并且应用程序在IIS7上设置为“集成管道”模式的应用程序池中运行。将应用程序池切换到经典模式基本上实现了向后兼容性。

不管怎么说,这里是帮我弄明白的资源:httpModules not working on iis7