none
Acessar Método Web Service RRS feed

  • Pergunta

  • Olá a todos.

    Estou criando meu primeiro Web Service e queria saber se alguém pode me ajudar com um probleminha que estou tendo.

     

    Estou usando Visual Studio 2005 com banco de dados SQL Server 2005 Express.

    O caso é o seguinte:
    Tenho um cliente o qual possui um sistema local com banco de dados Firebase e ele quer disponibilizar alguns dados dessa  base em seu site.

    Então, fiz um programa que lê as informações importantes e cria um arquivo de texto, o qual eu envio para a raiz do site via FTP.
    Aí criei um webservice que ao terminar o upload do arquivo será chamado para ler as informações do arquivo de texto e atualiza-las no banco SQL 2005 do site.

     

    Bom, quando criei o webservice testei localmente e funcionou certinho. Ele corre todo o TXT e atualiza o banco de dados local. Então entrei na raiz do site e criei uma pasta e coloquei o webservice dentro dela.

    Então fui até a aplicação que irá chamar o webservice e fui até a opção "Add Web Reference". Indiquei a URL que é, http://www.myonlinestatus.com/webservices/atualizaSIGCON.asmx . Então tentei testar clicando no link do serviço e recebi o seguinte erro:

    System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
       at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
       at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Object assemblyOrString, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed)
       at System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Object assemblyOrString, SecurityAction action, Boolean throwException)
       at System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs, PermissionSet grants, PermissionSet refused, PermissionSet demands, RuntimeMethodHandle rmh, Assembly asm, SecurityAction action)
       at AtualizaSIGCON.RunJOB()
    
    Que também acontece se eu chamo o serviço via código, que estou utilizando da seguinte forma:
    Dim leTXT As New AtualizaSIGCON.AtualizaSIGCON
    If leTXT.RunJOB = True Then
    MsgBox("Tarefa terminada com sucesso.")
    Else
    MsgBox("Ocorreu um erro durante a atualização do banco on-line.")
    End If
    Se alguém tiver idéia de como posso resolver esse problema, fico muito grato.
    Obrigado
    segunda-feira, 30 de julho de 2007 14:47

Todas as Respostas

  • Testei seu Web Service pelo link e ele resultou OK, não tive nenhum problema com o teste.

     

    Tente refazer a referência a ele para ser se algo mudou.

    quinta-feira, 2 de agosto de 2007 18:38
  • Me desculpe Émerson. É que descobri o que estava causando o erro, mas esqueci de postar aqui.

    O erro ocorre quando tento usar o método "WaitOne" do Mutex.

     

    Segue abaixo os imports e o código existente no WebMethod

     

    Imports System.Web

    Imports System.Web.Services

    Imports System.Web.Services.Protocols

    Imports System.Threading

    Imports ssPadrao

     

    <WebMethod()> _

    Public Function RunJOB() As String

    Dim mut As Mutex = New Mutex(False, " JobSchedulerMutex")

    Dim bErro As Byte

    mut.WaitOne()

    Try

    bErro = AtualizaPO()

    Catch Erro As Exception

    If Erro.ToString <> "" Then

    bErro = 9

    End If

    Finally

    If bErro = 1 Then

    RunJOB = "OK"

    ElseIf bErro = 9 Then

    RunJOB = "Erro"

    Else

    RunJOB = "Arquivo Inexistente"

    End If

    mut.ReleaseMutex()

    End Try

    End Function

     

    Então deixei comentado todas as linhas referentes ao objeto Mutex e agora não dá mais o erro.
    Coloquei essas linhas pois vi escrito que isso iria fazer com que o WebService não pudesse ser chamado duas ou mais vezes ao mesmo tempo.

    Isso está correto?
    Se não, qual outra maneira de poder controlar isso?

    quinta-feira, 2 de agosto de 2007 20:37