• 15-02-2018, 13:03:13
    #1
    Merhaba,
    Yapmak istediğimi örnekle kısaca anlatıyorum ;
    Yerel 2 tane sunucu var 192.168.0.1 ve 192.168.0.2 diyelim ben Asp.net web uygulamasını 192.168.0.1 e kurdum ve fileuplad ile dosya yükleme seçeneği koydum.
    Dosyalarımı barındırdığım sunucuya değil farklı sunucuya atmak istiyorum yani 192.168.0.2 ye birçok yöntem ve kod bloğu denedim fakat sonuç alamadım yardımcı olabilicek arkadaşlar var mı ?
    Localde çalıştırdığımda sorunsuz çalışan kod bloğunu paylaşacağım , fakat server a attığımda çalışmıyor.
    Not : FTP ile değil dosya yolu ile dosyaları atmam isteniyor \\192.168.0.2\dosyalar\ gibi

     public class NetworkConnection : IDisposable
        {
            string _networkName;
            public NetworkConnection(string networkName,
                NetworkCredential credentials)
            {
                _networkName = networkName;
                var netResource = new NetResource()
                {
                     Scope = ResourceScope.GlobalNetwork,
                    ResourceType = ResourceType.Disk,
                    DisplayType = ResourceDisplaytype.Share,
                    RemoteName = networkName
                };
                var userName = string.IsNullOrEmpty(credentials.Domain)
                    ? credentials.UserName
                    : string.Format(@"{0}\{1}", credentials.Domain, credentials.UserName);
                var result = WNetAddConnection2(
                    netResource,
                    credentials.Password,
                    userName,
                    0);
                if (result != 0)
                {
                    throw new Win32Exception(result, "Error connecting to remote share");
                }
            }
            ~NetworkConnection()
            {
                Dispose(false);
            }
            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }
            protected virtual void Dispose(bool disposing)
            {
                WNetCancelConnection2(_networkName, 0, true);
            }
            [DllImport("mpr.dll")]
            private static extern int WNetAddConnection2(NetResource netResource,
                string password, string username, int flags);
            [DllImport("mpr.dll")]
            private static extern int WNetCancelConnection2(string name, int flags,
                bool force);
        }
        [StructLayout(LayoutKind.Sequential)]
        public class NetResource
        {
            public ResourceScope Scope;
            public ResourceType ResourceType;
            public ResourceDisplaytype DisplayType;
            public int Usage;
            public string LocalName;
            public string RemoteName;
            public string Comment;
            public string Provider;
        }
        public enum ResourceScope : int
        {
            Connected = 1,
            GlobalNetwork,
            Remembered,
            Recent,
            Context
        };
        public enum ResourceType : int
        {
            Any = 0,
            Disk = 1,
            Print = 2,
            Reserved = 8,
        }
        public enum ResourceDisplaytype : int
        {
            Generic = 0x0,
            Domain = 0x01,
            Server = 0x02,
            Share = 0x03,
            File = 0x04,
            Group = 0x05,
            Network = 0x06,
            Root = 0x07,
            Shareadmin = 0x08,
            Directory = 0x09,
            Tree = 0x0a,
            Ndscontainer = 0x0b
        }
     var networkPath = @"\\192.168.0.2";
                    var credentials = new NetworkCredential(@"dosyalar", "sifre123");
                using (new NetworkConnection(networkPath, credentials))
                {
                    string Dosya1 = @"\\192.168.0.2\dosyalar\resim.png";
                    string Dosya3 = Server.MapPath("~/arsiv/resim.png");
    
                    File.Delete(Dosya3);
                    File.Copy(Dosya1, Dosya3);
                }
  • 15-02-2018, 14:27:07
    #2
    şu linki ile şu linki harmanlayıp istediğin sonuca ulaşabilirsin diye düşünüyorum, bir tanesinde txt diğerinde tüm dosya tiplerini yükleyecek şekilde arada ufak kod değişiklikleri yok yapamazsanız ücretli destek sağlayabilirim.
  • 15-02-2018, 14:33:48
    #3
    PrivateTR adlı üyeden alıntı: mesajı görüntüle
    şu linki ile şu linki harmanlayıp istediğin sonuca ulaşabilirsin diye düşünüyorum, bir tanesinde txt diğerinde tüm dosya tiplerini yükleyecek şekilde arada ufak kod değişiklikleri yok yapamazsanız ücretli destek sağlayabilirim.
    Cevabınız için teşekkürler , ama FTP bilgisi yok bende bunu not olarak belirmiştim. Network içindeki bir sunucuya dosya atmam gerekecek
  • 15-02-2018, 14:43:20
    #4
    smhtopcu26 adlı üyeden alıntı: mesajı görüntüle
    Cevabınız için teşekkürler , ama FTP bilgisi yok bende bunu not olarak belirmiştim. Network içindeki bir sunucuya dosya atmam gerekecek
    Şu adresten erişmişsin örnek kodlara sanırım.
    Serverde o dizin için okuma ve yazma izni vermen gerekiyor.
    1.maddeyi çevirdiğinde anlayabilirsin.
  • 15-02-2018, 16:05:51
    #5
    Kodlar Localde çalışıyor fakat sunucuya attığımda çalışmıyor. Kullanıcı adi şifre hatası veriyor.
  • 15-02-2018, 17:08:32
    #6
    smhtopcu26 adlı üyeden alıntı: mesajı görüntüle
    Kodlar Localde çalışıyor fakat sunucuya attığımda çalışmıyor. Kullanıcı adi şifre hatası veriyor.
    bir üst mesajda dediğimi yapmadığını düşünüyorum.

    çalışmıyorsa debug falan edilmesi gerekebilir çözemezsen talebin halinde işi üstlenebilirim.
  • 21-02-2018, 15:19:20
    #7
    Sorun kullandığım classtaki domainden kaynaklanıyormuş.
    string ipAddress = Request.UserHostAddress;
      IPHostEntry entry = Dns.GetHostEntry(ipAddress);
      string domainName = entry.HostName;
    bu kodlar ile domainName çekerek başka servera dosya atma işlemimi tamamladım. Cevaplarınız için tekrar teşekkür ederim.