调用webservice出现错误,服务器无法处理请求,当应用程序不在UserInteractive模式下运行时……


Dim path As String = System.IO.Path.GetDirectoryName(excelPath) + "\test.log"
Dim MyWriter As New System.IO.StreamWriter(path, True, System.Text.Encoding.Default)
Dim objConn As OleDbConnection = Nothing
Try
MyWriter.WriteLine(1)
Dim ds As DataSet = New DataSet()
If System.IO.File.Exists(excelPath) = False Then '判断文件是否存在
Return Nothing
End If
'获得excel类型
Dim strExtension As String = System.IO.Path.GetExtension(excelPath).ToString
Dim strFileName As String = System.IO.Path.GetFileName(excelPath).ToString
MyWriter.WriteLine(strExtension + "|" + strFileName.ToString)
'判断是何种类型采用相应连接
Select Case strExtension
Case ".xls"
objConn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelPath + ";" + "Extended Properties='Excel 8.0;HDR=yes;'")
Case ".xlsx"
MyWriter.WriteLine(31)
objConn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelPath + ";" + "Extended Properties='Excel 12.0 XML;HDR=yes;'")
Case Else
Return Nothing
End Select
MyWriter.WriteLine(32)
objConn.Open()
MyWriter.WriteLine(3)
'获得excel表下的sheet名
Dim schemaTable As DataTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, Nothing)
'获得第一个sheet名
Dim tableName As String = ""
For i As Integer = 0 To schemaTable.Rows.Count - 1 Step 1
If InStr(schemaTable.Rows(i)("TABLE_NAME").ToString, "$") Then
tableName = schemaTable.Rows(i)("TABLE_NAME").ToString
Exit For
End If
Next

以上是webservice的部分代码,其功能就是用oledb连接一个excel文件。
之前都没什么问题,但是突然就出现了这个异常。
异常完整信息:
服务器无法处理请求——当应用程序不在Userinteractive模式下运行时,显示模态对话框或表单是无效的操作。
指定ServiceNotification或DefaultDesktopOnly样式来显示来自service应用程序的通知。
我用写log方式找到了出错的地方:objConn.Open()
请问下这错误怎么解决?
...全文
429 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 2 楼 github_36000833的回复:
[quote=引用 1 楼 啥都不懂所以不当程序猿 的回复:] 有没有大神支个招啊!服务器我重启了,Acess引擎也重装了,但是就是出现这错误。明明最开始写的时候根本没这异常,那时访问都是能够访问的,突然就出现这异常了。
Excel,本来就是设计来和最终用户进行交互的。 团队里一个合格的架构师,会让你解释是什么特殊理由要在Service下使用Excel。 你要解释是否有其他替代方案,分析各种方案的优点和缺点。 如果有这些分析和探讨,或许你不用跳进当下Service用Excel的坑了。 [/quote] 请问下你有解决这异常的办法吗?
  • 打赏
  • 举报
回复
还有没有大神能够帮助下的啊!
  • 打赏
  • 举报
回复
引用 10 楼 正怒月神的回复:
[quote=引用 9 楼 啥都不懂所以不当程序猿 的回复:] [quote=引用 8 楼 正怒月神的回复:][quote=引用 7 楼 啥都不懂所以不当程序猿 的回复:] 不是这个问题,我服务器都重启过,重启了服务器任何进程都会被关吧?但是还是没用。
那就真不清楚了。[/quote] 我突然想到了一个地方,路径有中文,会不会是在调用webservice传参的过程中,服务器解析传过来的中文数据时解析错误?我刚刚用写log的方式将传过去的路径写出来,结果中文的地方就是乱码。[/quote] 那就有可能了。 你简单测试一下全英文。[/quote] 服了,路径和文件名全变成英文,照样出现那异常……
正怒月神 2020-03-02
  • 打赏
  • 举报
回复
引用 9 楼 啥都不懂所以不当程序猿 的回复:
[quote=引用 8 楼 正怒月神的回复:][quote=引用 7 楼 啥都不懂所以不当程序猿 的回复:] 不是这个问题,我服务器都重启过,重启了服务器任何进程都会被关吧?但是还是没用。
那就真不清楚了。[/quote] 我突然想到了一个地方,路径有中文,会不会是在调用webservice传参的过程中,服务器解析传过来的中文数据时解析错误?我刚刚用写log的方式将传过去的路径写出来,结果中文的地方就是乱码。[/quote] 那就有可能了。 你简单测试一下全英文。
  • 打赏
  • 举报
回复
引用 8 楼 正怒月神的回复:
[quote=引用 7 楼 啥都不懂所以不当程序猿 的回复:] 不是这个问题,我服务器都重启过,重启了服务器任何进程都会被关吧?但是还是没用。
那就真不清楚了。[/quote] 我突然想到了一个地方,路径有中文,会不会是在调用webservice传参的过程中,服务器解析传过来的中文数据时解析错误?我刚刚用写log的方式将传过去的路径写出来,结果中文的地方就是乱码。
正怒月神 2020-03-02
  • 打赏
  • 举报
回复
引用 7 楼 啥都不懂所以不当程序猿 的回复:
不是这个问题,我服务器都重启过,重启了服务器任何进程都会被关吧?但是还是没用。
那就真不清楚了。
  • 打赏
  • 举报
回复
引用 6 楼 正怒月神的回复:
[quote=引用 5 楼 啥都不懂所以不当程序猿 的回复:] [quote=引用 3 楼 正怒月神的回复:]你是把excel当做数据库用? 这个时候报错 objConn.Open() 你先看看路径对不对,然后看看文件是不是只读,最后看看权限是不是有问题。
是的,把excel当成数据库用。我确认过了,路径没问题,路径没问题,excel的权限对于everyone都是full control。实在是有点搞不明白,我最开始这样写都没问题,改了下后面读取的字段后最开始也没问题,突然就有问题了。[/quote] 你到服务器的任务管理器, 看看,excel是不是被打开了。把他们都关闭掉。 可能某些异常导致excel打开后,没有关闭,然后文件被占用[/quote] 不是这个问题,我服务器都重启过,重启了服务器任何进程都会被关吧?但是还是没用。
正怒月神 2020-03-02
  • 打赏
  • 举报
回复
引用 5 楼 啥都不懂所以不当程序猿 的回复:
[quote=引用 3 楼 正怒月神的回复:]你是把excel当做数据库用? 这个时候报错 objConn.Open() 你先看看路径对不对,然后看看文件是不是只读,最后看看权限是不是有问题。
是的,把excel当成数据库用。我确认过了,路径没问题,路径没问题,excel的权限对于everyone都是full control。实在是有点搞不明白,我最开始这样写都没问题,改了下后面读取的字段后最开始也没问题,突然就有问题了。[/quote] 你到服务器的任务管理器, 看看,excel是不是被打开了。把他们都关闭掉。 可能某些异常导致excel打开后,没有关闭,然后文件被占用
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神的回复:
你是把excel当做数据库用? 这个时候报错 objConn.Open() 你先看看路径对不对,然后看看文件是不是只读,最后看看权限是不是有问题。
是的,把excel当成数据库用。我确认过了,路径没问题,路径没问题,excel的权限对于everyone都是full control。实在是有点搞不明白,我最开始这样写都没问题,改了下后面读取的字段后最开始也没问题,突然就有问题了。
  • 打赏
  • 举报
回复
引用 2 楼 github_36000833的回复:
[quote=引用 1 楼 啥都不懂所以不当程序猿 的回复:] 有没有大神支个招啊!服务器我重启了,Acess引擎也重装了,但是就是出现这错误。明明最开始写的时候根本没这异常,那时访问都是能够访问的,突然就出现这异常了。
Excel,本来就是设计来和最终用户进行交互的。 团队里一个合格的架构师,会让你解释是什么特殊理由要在Service下使用Excel。 你要解释是否有其他替代方案,分析各种方案的优点和缺点。 如果有这些分析和探讨,或许你不用跳进当下Service用Excel的坑了。 [/quote] 用户需要在手持设备里查询excel里面的信息,而wince下一般是不支持操作excel的,所以我才想到利用webservice方式将逻辑分离出来,在webservice上用oledb方式去操作excel。暂时我并没有想到别的替代方案
正怒月神 2020-03-02
  • 打赏
  • 举报
回复
你是把excel当做数据库用? 这个时候报错 objConn.Open() 你先看看路径对不对,然后看看文件是不是只读,最后看看权限是不是有问题。
github_36000833 2020-03-02
  • 打赏
  • 举报
回复
引用 1 楼 啥都不懂所以不当程序猿 的回复:
有没有大神支个招啊!服务器我重启了,Acess引擎也重装了,但是就是出现这错误。明明最开始写的时候根本没这异常,那时访问都是能够访问的,突然就出现这异常了。
Excel,本来就是设计来和最终用户进行交互的。 团队里一个合格的架构师,会让你解释是什么特殊理由要在Service下使用Excel。 你要解释是否有其他替代方案,分析各种方案的优点和缺点。 如果有这些分析和探讨,或许你不用跳进当下Service用Excel的坑了。
  • 打赏
  • 举报
回复
有没有大神支个招啊!服务器我重启了,Acess引擎也重装了,但是就是出现这错误。明明最开始写的时候根本没这异常,那时访问都是能够访问的,突然就出现这异常了。

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧