webForumDet fria alternativet

Spara fil över nätverk

.NET

7 svar · 229 visningar · startad av fredrik

Medlem sedan dec. 19991 072 inlägg
Frågan#1

Jag skickar behöver spara en fil till en upp-mappad enhet över nätverket.

Hur jag än bär mig åt får jag "A generic Error occured in GDI+".
Har försökt sätta rättigheter på "Intranet Zone" till "Fully Trusted" men det hjälper inte.

Nån som har några tips?

Medlem sedan apr. 20012 266 inlägg
#2

Vad är det du försöker spara och hur, lite kod underlättar.

Medlem sedan dec. 19991 072 inlägg
#3

Jag försöker spara en bild via Image-objektet.

    <WebMethod()> Public Sub SetWebImage(ByVal imgBytes() As Byte, ByVal strImgName As String)
        Dim imgObj As Drawing.Image
        Dim memStr As IO.MemoryStream = New IO.MemoryStream(imgBytes)
        Dim strFilePath As String = String.Concat(strFolderPath, strImgName)

        imgObj = Image.FromStream(memStr)

        Try
            imgObj.Save(strFilePath)
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try

        imgObj.Dispose()
    End Sub
Medlem sedan apr. 20012 266 inlägg
#4

fredrik skrev:

Jag försöker spara en bild via Image-objektet.

    <WebMethod()> Public Sub SetWebImage(ByVal imgBytes() As Byte, ByVal strImgName As String)
        Dim imgObj As Drawing.Image
        Dim memStr As IO.MemoryStream = New IO.MemoryStream(imgBytes)
        Dim strFilePath As String = String.Concat(strFolderPath, strImgName)

        imgObj = Image.FromStream(memStr)

        Try
            imgObj.Save(strFilePath)
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try

        imgObj.Dispose()
    End Sub

Testa detta sätt, tyvärr inte i VB.NET:

FileStream filestream;
try
{
	filestream = new FileStream(strFilePath, FileMode.Create);
	filestream.Write(imgBytes, 0, imgBytes.Length);
}
finally
{
	filestream.Dispose();
}

OBS! Koden är otestad.

Medlem sedan dec. 19991 072 inlägg
#5

Hej, tack för tipset, jag tror iof inte att det är något fel på själva koden här, för när jag använder en lokal sökväg på min lokala dator så funkar allt perfekt.

Det är alltså bara när jag försöker spara till en uppmappad enhet som det blir fel.

Fel-meddelandet är "A generic Error occured in GDI+" vilket man får om man försöker spara något till en mapp som inte finns, eller där man inte har rättigheter.

Jag kan också tillägga att det är en Webservice som försöker spara filen. Jag har satt att IIS.en ska använda samma användare som jag är inloggad med på datorn, alltså inte IUSR.n.

Om jag sparar filen direkt från mitt program till en annan enhet fungerar det också...alltså borde det ha nåt med webservicens rättigheter att göra...frågan är bara vad....

Tack på förhand!

Medlem sedan apr. 20012 266 inlägg
#6

Om du kör domän kan du skapa ett domänkonto och sedan ge den rätt rättigheter på de olika nätverksenheterna och ställa in i Machine.config. Hur menar du med samma användare som är inloggad på datorn, menar du server eller klienten? eftersom på klienten kan det kanske inte fungera som vanligt när det är en webservice.

Medlem sedan dec. 19991 072 inlägg
#7

Hur menar du med samma användare som är inloggad på datorn

I detta fallet är denna datorn både klient och server.

Var i Machine.config kan jag göra de inställningarna?

Medlem sedan apr. 20012 266 inlägg
#8

Här!

<!--
        processModel Attributes:
          enable="[true|false]" - Enable processModel
          timeout="[Infinite | HH:MM:SS] - Total life of process, once expired process is shutdown and a new process is created
          idleTimeout="[Infinite | HH:MM:SS]" - Total idle life of process, once expired process is automatically shutdown
          shutdownTimeout="[Infinite | HH:MM:SS]" - Time process is given to shutdown gracefully before being killed
          requestLimit="[Infinite | number]" - Total number of requests to serve before process is shutdown
          requestQueueLimit="[Infinite | number]" - Number of queued requests allowed before process is shutdown
          restartQueueLimit="[Infinite | number]" - Number of requests kept in queue while process is restarting
          memoryLimit="[number]" - Represents percentage of physical memory process is allowed to use before process is recycled
          webGarden="[true|false]" - Determines whether a process should be affinitized with a particular CPU
          cpuMask="[bit mask]" - Controls number of available CPUs available for ASP.NET processes (webGarden must be set to true)
          userName="[user]" - Windows user to run the process as. 
                      Special users: "SYSTEM": run as localsystem (high privilege admin) account.
                                     "machine": run as low privilege user account named "ASPNET".
                      Other users: If domain is not specified, current machine name is assumed to be the domain name.
          password="[AutoGenerate | password]" - Password of windows user. For special users (SYSTEM and machine), specify "AutoGenerate".
          logLevel="[All|None|Errors]" - Event types logged to the event log
          clientConnectedCheck="[HH:MM:SS]" - Time a request is left in the queue before ASP.NET does a client connected check
          comAuthenticationLevel="[Default|None|Connect|Call|Pkt|PktIntegrity|PktPrivacy]" - Level of authentication for DCOM security
          comImpersonationLevel="[Default|Anonymous|Identify|Impersonate|Delegate]" - Authentication level for COM security
          responseDeadlockInterval="[Infinite | HH:MM:SS]" - For deadlock detection, timeout for responses when there are executing requests.
          maxWorkerThreads="[number]" - Maximum number of worker threads per CPU in the thread pool
          maxIoThreads="[number]" - Maximum number of IO threads per CPU in the thread pool
          serverErrorMessageFile="[filename]" - Customization for "Server Unavailable" message

          When ASP.NET is running under IIS 6 in native mode, the IIS 6 process model is
          used and settings in this section are ignored.  Please use the IIS administrative
          UI to configure things like process identity and cycling for the IIS
          worker process for the desired application          
        -->
		<processModel enable="true" timeout="Infinite" idleTimeout="Infinite" shutdownTimeout="0:00:05" requestLimit="Infinite" requestQueueLimit="5000" restartQueueLimit="10" memoryLimit="60" webGarden="false" cpuMask="0xffffffff" userName="machine" password="AutoGenerate" logLevel="Errors" clientConnectedCheck="0:00:05" comAuthenticationLevel="Connect" comImpersonationLevel="Impersonate" responseDeadlockInterval="00:03:00" maxWorkerThreads="20" maxIoThreads="20"/>
256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)