PRB: İstemci Uygulaması Bir Web Hizmeti Çağırdığında "System.IO.FileNotFoundException" Hatası Alıyorsunuz

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 823196
Belirtiler
Bir Microsoft ASP.NET Web uygulamasında bir Web hizmetini çağırdığınızda aşağıdaki hata iletisini alabilirsiniz:
System.IO.FileNotFoundException
Neden
Aşağıdaki koşullardan biri doğru olduğunda hata iletisini alabilirsiniz:
  • Alt işlem theprocess Temp dizinine okuma iznine sahip değil ve alt işlemin işlem Tempdirectory yazma izinleri yok.

    Not , XmlSerializer sınıf oluşturur ve Serileştirme ve serisini kaldırma gerçekleştirmek için thefly kodu derler. XmlSerializer thecompilation gerçekleştirmek için kod belge nesne modeli (CodeDom) kullanır. CodeDom derleme diskte geçici dosyaları kullanır. Sonra workerprocess Temp dizini üzerinde Okuma izinleri ve writepermissions Temp dizininde yoksa, tüm Web hizmeti çağrıları başarısız. Bu nedenle, alt işlem Tempdirectory Okuma izinlerini ve Temp dizininde yazma izni gerektirir.

    - veya -
  • Kod derleme hataları vardır, XmlSerializer oluşturulan.
Çözüm

Geçici Dizinde Alt İşlem Hesabı İzinleri


Bu sorunu gidermek için ASP.NET çalışan işlemi hesabının (ASPNET hesabı veya ŞEBEKE Servisi hesabı üzerinde Internet Information Services [IIS] 6. 0 uygulamanız dağıttıysanız) okuma erişimine ve yazma erişimine Temp dizininde olması gerekir.

Not Kimliğe bürünme özelliğini kullanırsanız, Kimliğine bürünülen kullanıcı Temp dizininin tam erişimi olmalıdır.

Temp dizininde Çalışan işlem hesabına gerekli izinleri atamak için şu adımları izleyin:
  1. Microsoft Windows Gezgini'nde, % windir%\tempdirectory bulun.
  2. %Windir%\Tempsağ tıklatın ve sonraÖzellikler' i tıklatın.
  3. Özellikler penceresinde,Güvenlik sekmesini tıklatın.
  4. Ekletıklayın türüSunucuAdı\ASPNET, Template'i işaret edip Tamam.

    Not Değiştir SunucuAdı Web sunucusu adı ile.

    Değiştir ASPNET ile NETWORKSERVICE IIS 6.0, uygulama ile dağıttıysanız.
  5. İzin veraltındaTam Denetim onay kutusunu tıklatıp seçin ve sonraTamam' ı tıklatın.

XmlSerializer tarafından oluşturulan kod derleyici hataları bulma


Derleyici tarafından oluşturulan hataları bulmak için derleyici tarafından oluşturulan dosyaları korumak için Web.config dosyasına bir anahtarı eklemelisiniz. Bunu yapmak için şu adımları izleyin:
  1. Web.config dosyasını Not Defteri gibi bir metin düzenleyicisinde açın.
  2. Bir XmlSerialization.Compilation geçmeye kodun system.diagnostics bölümü aşağıdaki gibi ekleyin:
    <configuration>    <system.diagnostics>         <switches>            <add name="XmlSerialization.Compilation" value="4"/>         </switches>    </system.diagnostics></configuration>
  3. İstemci uygulamasını çalıştırın.

    Clientapplication Web servisi çağırır.
  4. The_tmpname.00.cs dosyasını ve _tmpname.out dosyasını %windir%\temp dizininde olduğunu doğrulayın.

    _Tmpname.00.csfile üretilen kaynağıdır. _Tmpname.out dosyası compilererrors olmalıdır.

    Not Okuma izinleri etkinleştir ve Temp dizininde yazma izinleri theworker işlem hesabı (ASPNET veya ağ hizmeti) % tmpname % dosyaları yazmak için etkinleştirin.
Durum
Bu davranış normaldir.
Daha fazla bilgi

Davranışı yeniden oluşturma adımları

Bir Web servisi yaratmak

  1. Microsoft Visual Studio .NET'i başlatın.
  2. Microsoft Visual C# .NET veya Microsoft Visual Basic .NET kullanarak yeni bir ASP.NET Web hizmeti projesi oluşturun.

    Default,service1.asmx tarafından oluşturulur.
  3. Proje adıWebServiceTemp.
  4. Solution Explorer'da Service1.asmxTemplate'i işaret edip Kod görünümüsağ tıklatın.
  5. Service1.asmx.cs dosyası (veya Visual Basic .NET kullanmakta olduğunuz Service1.asmx.vb fileif),HelloWorld() WebMethod varsayılan açıklama karakterlerini kaldırın.
  6. Yapı menüsünde BuildSolutiontıklatın.

Bir istemci Web uygulaması oluşturma

  1. Visual C# .NET veya Visual Basic .NET kullanarak yeni bir ASP.NET Web uygulaması oluşturun.
  2. Proje adıWebAppTemp.
  3. Çözüm Gezgini'nde,Başvurular' ı sağ tıklatın ve WebReference Ekle'yitıklatın.
  4. Adres metin kutusuna WebServiceTempiçin aşağıdaki URL'yi yazın:

    http://localhost/WebServiceTemp/service1.asmx
  5. Git' i tıklatın ve ardından AddReferencetıklatın.
  6. WebForm1Page_Load olayı kodunu açmak için çift tıklatın.
  7. Page_Loadolay işleyicisine aşağıdaki kodu ekleyin.

    Visual C# .NET örnek kodu
    // Start an instance of the Web service client-side proxy.localhost.Service1 myProxy = new localhost.Service1();Response.Write( myProxy.HelloWorld());	
    Visual Basic .NET örnek kodu
    'Start an instance of the Web service client-side proxy.Dim myProxy As localhost.Service1 = New localhost.Service1()Response.Write(myProxy.HelloWorld())
  8. Yapı menüsünde BuildSolutiontıklatın.

Temp dizini üzerindeki izinleri ayarlama


Temp dizininde Çalışan işlem hesabına gerekli izinleri atamak için şu adımları izleyin:
  1. Microsoft Windows Gezgini'nde, % windir % dizininde bulun.
  2. %Windir%\Tempsağ tıklatın ve sonraÖzellikler' i tıklatın.
  3. Özellikler penceresindeGüvenlik sekmesini tıklatın.
  4. Ekletıklayın türüSunucuAdı\ASPNETve Project'i tıklayın Tamam.
  5. Yaz onay kutusunu notselected izin veraltında olduğundan emin olun ve sonraTamam' ı tıklatın.
  6. Web uygulamasını çalıştırın.

    Bu makalenin "Belirtiler" bölümünde sözü edilen linepos alabilirsiniz.
Referanslar

Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarına tıklayın:
818364 Microsoft Visual Basic .NET kullanarak bir Windows uygulamasında bir Web hizmetine erişmek nasıl

314150 .NET Framework'de XML serileştirme için yol haritası

815169 ASP.NET sunucu uygulamaları izlemek nasıl

815153 ASP.NETapplications güvenlik için NTFS dosya izinlerini yapılandırma hakkında

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 823196 - Son İnceleme: 07/03/2016 21:17:00 - Düzeltme: 4.0

Microsoft ASP.NET 1.1, Microsoft ASP.NET 1.0, Microsoft Web Services Enhancements for Microsoft .NET 1.1

  • kbxml kbwebserver kbconfig kbwebservices kbprb kbmt KB823196 KbMttr
Geri bildirim