我有一台Windows 2003服务器。
我主要在其上运行ASP Classic网站。我将它们配置为默认网站下的虚拟目录,因此可以http://TheWebServer/TheOnlineApp访问它们。我使用ASP.net创建了一个新站点,并将其设置为虚拟目录。
在默认网站的ASP.NET选项卡上,我的版本选择是1,2和4.因为我在Oracle中运行查询,所以我需要将其作为ASP.Net 2运行。
我无法将它们作为ASP.net 4运行,因为Oracle驱动程序不包含在4中,我可以从Oracle获取驱动程序,但是对于我们使用的旧版Oracle,新版本的oracle不是远向后兼容。
如果我将虚拟目录的ASP.net版本更改为2,并将默认值保留为4,则会出现404错误:
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
Requested URL: /TechCallCenter/eurl.axd/4e68f64d4066d244a27da9fff7bf3f0d/
但是,我可以按名称访问特定页面,而不是依赖于默认文档。 另外,在我得到的所有其他虚拟目录中:
Server Application Unavailable
The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request.
Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur."
我无法访问任何ASP经典虚拟目录。
如果我在默认站点和我尝试上班的虚拟目录上将版本更改为2,那么我的所有页面都可以访问,但是我在尝试连接到Oracle数据库时遇到错误
[Exception: OCIEnvCreate failed with return code -1 but error message text was not available.]
System.Data.OracleClient.OciHandle..ctor(OciHandle parentHandle, HTYPE handleType, MODE ocimode, HANDLEFLAG handleflags) +363
System.Data.OracleClient.OciEnvironmentHandle..ctor(MODE environmentMode, Boolean unicode) +23
System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName) +122
System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions) +135
System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) +36
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +28
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +424
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +68
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +519
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +82
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +104
System.Data.OracleClient.OracleConnection.Open() +37
ScratchPad.Button1_Click(Object sender, EventArgs e) +235
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5087
我的开发机器上的一切都很好用,但它是一台Windows 7计算机,所以IIS的界面完全不同。
答案 0 :(得分:0)
我的猜测是你在同一个进程中使用了多个版本的.Net CLR(1.1,2.0或4.0),这在IIS6中并不是很好用。
创建一个新的应用程序池,您只能用它来运行.Net 2.0应用程序。然后通过虚拟目录属性对话框中的虚拟目录 - >应用程序池设置分配虚拟目录以使用它。执行此操作后,您可以将父网站设置回其正在使用的设置。
另请记住,虚拟目录可以从父级的web.config值继承设置,因此请根据需要使用重置(如<connectionStrings><clear /></connectionStrings>
)。
如果在您的环境/网络中使用新IP,域名或端口分隔,我建议将其移至自己的网站。没什么大不了的,因为你应该可以让虚拟目录在你的情况下工作,但它可以简化你的事情。