如何解决从asp.net在服务器上调用exe
| 想从我的服务器上的asp.net运行exe,这可能吗? 我使用这种方法: System.Diagnostics.Process process1 = new System.Diagnostics.Process();
// Set the directory where the file resides
process1.StartInfo.WorkingDirectory = @\"D:\\dev\\Analyzer\\bin\\Release\";
// Set the filename name of the file you want to open
process1.StartInfo.FileName = @\"D:\\dev\\Analyzer\\bin\\Release\\Analyzer.exe\";
process1.StartInfo.Arguments = \"123\";
// Start the process
process1.Start();
当我调试它时它可以工作,但是当我将我的网站放在本地主机上时我有例外:
用户\'IIS APPPOOL \\ dq \'的登录失败
dq是我的网站的名称。
堆:
System.Data.SqlClient.SqlException(0x80131904):用户\'IIS APPPOOL \\ dq \'的登录失败。在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()在System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet处的System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()处在System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)处,在System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo,字符串newPassword,字符串newPassword,布尔值ignoreSniOpenTimeout,TimeoutTimer超时,在系统上SqlConnection owningObject)的bulkCopyHandler,TdsParserStateObject stateObj)。 SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo,String newPassword,Boolean redirectedUserInstance,SqlConnection owningObject,SqlConnectionString connectionOptions,TimeoutTimer timeout)at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject,TimeoutTimer超时,SqlConnectionString connectionO System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity,SqlConnectionString connectionOptions,Object providerInfo,String newPassword,SqlConnection owningObject,Boolean redirectedUserInstance)在System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions) System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection,DbConnectionPool池,DbConnectionOptions选项)的System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owneringObject)的选项,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection owningConnection)。 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owneringObject)的System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)的ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) e.DbConnectionClosed.OpenConnection(DbConnection externalConnection,DbConnectionFactory connectionFactory)位于System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user)处于System.Data.Linq.SqlClient.SqlProvider处System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode()(位于System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(表示查询)处的.get_IsSqlCe() D:\\ dev \\ Analyzer \\ Program.cs:line 59中Analyzer.Program.Main(String [] args)的.DataQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
解决方法
我在这里假设您遇到的异常是一种访问冲突。
在这种情况下,您需要确保使用具有足够特权来运行可执行文件(并访问其所在目录)的帐户的ѭ1和
Password
启动进程,或者使用该帐户设置应用程序池。
更新:
堆栈跟踪点指向错误的LINQ查询,而不是3。到底是什么例外?我无法从痕迹中分辨出来。
这是什么路线?
更新2:
检查您的连接字符串和SQL Server-该站点帐户无法登录到SQL Server。这与Process.Start
或LINQ语法完全无关。
您设置了正确的密码吗?如果您使用集成安全性(SSPI=true
),是否确定SQL Server启用了此登录名?
, 完全不建议使用此方法。在服务器上,您的ASP.NET网站也作为一个进程运行。
启动另一个进程将需要一些额外的权限。工作进程正在尝试使用其自己的用户(IIS APPPOOL \\ dq)帐户启动analyzer.exe,并且在那里失败。您将需要使用另一个具有足够权限启动另一个可执行文件的帐户运行辅助进程。
顺便说一句,这将打开您的地表威胁的范围。完全不推荐。
谢谢
高拉夫
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。