42 messaggi dal 08 febbraio 2002
Ciao a tutti,
ho un problema che riguarda il download, per quello che ho visto fino ad adesso, riguardante tutti i tipi di file da una mia applicazione web con C#.
Ma andiamo con ordine : Ho un server 2003 su una DMZ contenente un'applicazione asp.net 1.1 che, tra le altre cose, permette ad alcuni utenti di poter scaricare dei messaggi di posta elettronica da un db. Nel caso questo messaggio contenga degli allegati, essi vengono salvati (da un servizio web che risiede su un'altra macchina) su uno share di rete (ovviamente visibile dal server in DMZ). L'accesso a tale cartella avviene con un utenza dedicata e correttamente funzionante da applicazione tramite impersonation. Il percorso di rete dove si trova il file risiede anche esso su db.
Fino a un un paio di settimane fa tale cartella era insita all'interno del server stesso e l'applicazione non aveva mai dato problemi, ma da quando è stata spostata sullo share se provo a cliccare sul link dell'allegato a un messaggio, l'applicazione resta in "clessidra" un paio di minuti e poi mi presenta la classica schermata

"Cannot Find Server. The Page Cannot be Displayed. The page you are looking for is currently unavailable. The Web site might be experiencing technical difficulties, or you may need to adjust your browser settings."

Ora, se provo ad aprire un file dalla mia macchina di sviluppo, esso non sembra avere nessun problema, compare immediatamente il prompt di salvataggio/ apertura file.
Ciò mi fa pensare a qualche problema di permessi sulla rete, ma non saprei se sono a livello di IE o di IIS (Content Type ?). Vi posto anche la parte di codice, peraltro piuttosto standard, che effettua il download :


string _NetworkUserName = (string)_configReader.GetValue("AttWriterName", typeof(string));
string _NetworkUserPwd = (string)_configReader.GetValue("AttWriterPass", typeof(string));
string _NetworkUserDomain = (string)_configReader.GetValue("AttWriterDomain", typeof(string));
if(impersonateValidUser(_NetworkUserName, _NetworkUserDomain, _NetworkUserPwd ))
{
string fullPath;
FileInfo fi;
fullPath = Convert.ToString(ISSCommon.DBNullToNullObject(dr["Path"]));
fullPath = Path.Combine(fullPath, dr["GeneratedFileName"].ToString());
fi = new FileInfo(fullPath);

// apre il documento come stream binario e lo salva nello stream del browser
// (fa apparire la finestrella di download)
if (fi.Exists)
{

Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition",
"attachment; filename=" + Server.UrlPathEncode(dr["OriginalFileName"].ToString()) );
Response.AppendHeader("Content-Length", fi.Length.ToString());
Response.WriteFile(fullPath, 0, fi.Length);
Response.End();
}
else
{
ISSCommon.RegisterMessageBox(this.Page,
"L' allegato richiesto non è più presente sul server.");
return;
}
undoImpersonation();
}
else
{
//Your impersonation failed. Therefore, include a fail-safe mechanism here.
ISSCommon.RegisterMessageBox(this.Page,
"L' utente di lettura allegati non è esatto");
return;
}
42 messaggi dal 08 febbraio 2002
Scusate, ieri mi sono dimenticato di dire che i file allegati nella cartella di share sono salvati con un nome criptato (un GUID) e un' estensione ".att"
Inoltre (e soprattutto) sulla mia macchina di sviluppo c'è installato IIS 5.1, mentre su server 2003 c'è ovviamente la versione 6.0 (e dal punto di vista della sicurezza credo che siano molto diversi).
Ciao e grazie in anticipo.
Modificato da baltica il 09 maggio 2007 15.36 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC