Visual Studio'dan bir masmavi işlevi yayınlamaya çalışırken hata oluştu


13

Visual Studio kullanarak işlevimi yayımlamaya çalıştığımda aşağıdaki hata iletisini alıyorum, bunu nasıl düzeltebilirim?

System.AggregateException: Bir veya daha fazla hata oluştu. ---> System.Exception: Publish bir hatayla karşılaştı. Hatanın nedenini belirleyemedik. Daha fazla ayrıntı için çıkış günlüğüne bakın. --- System.Threading.Tasks.Tasks.Tasks.Task.ThrowIfExceptional (System.Threading.Tasks.Task.Wait (Int32 millisecondsTimeout, CancellationToken cancellationToken)) adresinde Microsoft.Publish.Fublish.Fublish.Furwork.Furlish.us adresindeki System. Model.DefaultPublishSteps. <> C__DisplayClass26_0.b__2 () at System.Threading.Tasks.Task`1.InnerInvoke () System.Threading.Tasks.Task.Execute () --- İstisna olan önceki konumdan yığın izlemenin sonu System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Görev görevi) 'de System.Runtime.CompilerServices' de atıldı. TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task), Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext () --- System.Runtime.CompilerServices.TaskAwaiterSrowNew.ThForForThuccessForThThforuccessThThThuccessThThforThuccessForThuccessFor (Görev görevi) Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (Inner Exception # 0) System.Ex özelliğine sahiptir: System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) bir hatayla karşılaştı. Hatanın nedenini belirleyemedik. Daha fazla ayrıntı için çıkış günlüğüne bakın. <--- MoveNext () --- İstisnanın atıldığı önceki konumdan yığın izlemenin sonu --- Microsoft'ta System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) konumundaki System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification'de (Görev görevi) .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (İç İstisna # 0) System.Exception: Yayınlama bir hatayla karşılaştı. Hatanın nedenini belirleyemedik. Daha fazla ayrıntı için çıkış günlüğüne bakın. <--- MoveNext () --- İstisnanın atıldığı önceki konumdan yığın izlemenin sonu --- Microsoft'ta System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task task) konumundaki System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification'de (Görev görevi) .Publish.Framework.ViewModel.ProfileSelectorViewModel.d__213.MoveNext () ---> (İç İstisna # 0) System.Exception: Yayınlama bir hatayla karşılaştı. Hatanın nedenini belirleyemedik. Daha fazla ayrıntı için çıkış günlüğüne bakın. <--- d__213.MoveNext () ---> (İç İstisna # 0) System.Exception: Yayınlama bir hatayla karşılaştı. Hatanın nedenini belirleyemedik. Daha fazla ayrıntı için çıkış günlüğüne bakın. <--- d__213.MoveNext () ---> (İç İstisna # 0) System.Exception: Yayınlama bir hatayla karşılaştı. Hatanın nedenini belirleyemedik. Daha fazla ayrıntı için çıkış günlüğüne bakın. <---

System.Exception: Publish bir hatayla karşılaştı. Hatanın nedenini belirleyemedik. Daha fazla ayrıntı için çıkış günlüğüne bakın.

===================


Ben içine çalıştırıyorum benzer bir sorun Visual Studio 2019 yılında şu anda - Ben benim durumumda klasöre yayımlamak çalışıyorum ama. Hala buna neyin neden olduğunu izlemeye çalışıyorum, ancak şu ana kadar bu durumda denedim: 1.) NuGet önbelleğini temizle, 2.) bin ve obj klasörlerini kaldır 3.) Yeni bir klasör profili oluşturdu Ayrıca, Çıktı günlük dosyasında ne görüyorsunuz? Yararlı bir şey var mı?
VirtualValentin

Git üzerinden dağıtmaya çalıştınız mıDeployment Center
pavle

Yanıtlar:


8

Deneyebilir misin this

WEBSITE_RUN_FROM_PACKAGE ayarını Azure Portal'dan Azure İşlevleri Uygulama Ayarları'ndan kaldırın.


2
Bunu başarı olmadan yaptım.
Recusiwe

Bu benim için çalıştı. Ortam değişiklikleri yapıldığında Azure İşlevini 'yeniden başlatmak' veya bunun bir engelleme yapılandırması olup olmadığı konusunda emin değilim.
Justin Neff

5

Bu bir Visual Studio zaman aşımı sorunudur, yani kodunuz ve diğer bazı ayarlar sorunun anahtarı değildir. Bu hata, Visual sürümde bir zaman aşımı sınırı ayarladığı için oluşur. (Dosya çok büyük veya internet hızı kararsız)

Dağıtım projeniz çok büyük değilse, çalıştırmayı denemeden önce ağ hızının sabit olmasını bekleyebilirsiniz. Elbette, bu sorunu önlemek için zip dağıtımı gibi diğer dağıtım yöntemlerini de deneyebilirsiniz .


Zipdeploy kullanarak konuşlandırmayı başardım. Ancak, Uygulama içeriğini kontrol ettiğimde güncellenir, ancak işlevi çalıştırdığımda eski sürümü çalıştırıyor gibi görünüyor?
Recusiwe

@Recusiwe 'Run old version' ne anlama geliyor? Azure işlevinin sürümü değiştirildi mi demek istediniz? Zip dağıtımı bu sorunu çözdü mü?
BowmanZhu

"Eski sürüm" ile zip-yayılan değil, VS'den yayınlayabildiğim son sürümü kastediyorum. Uygulama içeriği konuşlandırılan zip'in kodunu içeriyor, ancak çalıştırmıyor. Eski bir sürümü çalıştırır.
Recusiwe

@Recusiwe Şu anda hangi işlev sürümünü kullanıyorsunuz? Şu anda hangi IDE'yi kullanıyorsunuz? Ve projenizin montajı? ( .csprojDosya) Daha önce benzer bir hatayla karşılaştım, o zaman bir montaj sorunu gibi görünüyor. Bazen bu hata yalnızca Visual Studio 2019'da oluşur. Bu özel durumun hala var olup olmadığını görmek için Visual Studio 2017'yi kullanmayı deneyebilirsiniz. Visual Studio 2017 kullanıyorsanız Resharper kullanıyor musunuz? Hatanızı yeniden oluşturmaya ve benzer bir hatayla karşılaşmaya çalışıyorum, ancak bunun durumunuzla ilgili olduğundan emin değilim.
BowmanZhu

İşlev uygulaması s. 2 ve Visual Studio 16.4.1
Recusiwe

0

Projenizi GitHub gibi bir oyun biçiminde paylaşmadan, özel tavsiyeler sunmak bizim için gerçekten zor, çok fazla değişken var, NuGET paketlerinin ve referanslarının çok fazla kombinasyonu, projenizin bu çatışmaya neden olacak şekilde bu çatışmaya sahip olabileceğini gösteriyor. hata.

Özellikle v2 İşlevleri ile bu sorunu veya benzerlerini birkaç kez yaşadım. İşlevleri olan en büyük faktörlerden biri v1 ve v2 arasındaki rakip kavramlardır.

Azure'da hedef kaynak oluşturmak için Visual Studio yayınlama sihirbazını kullandığınızda, daha uzun bir başarıya sahip olma eğilimindedir, bir süredir bununla mücadele ediyorsanız, başka bir şey yoksa kavramın bir kanıtı olarak bu süreci izlemenizi öneririm:

Bu tavsiye VS2017 ve 2019'da eşit derecede iyi çalışır

  1. Aynı çözümle görsel stüdyoda yeni bir Fonksiyon Projesi oluşturun.
    • Orijinal işlevinizin adını çoğaltma
  2. İşlevi YENİ Azure kaynağına yayımlayın, bu kaynağı oluşturmak için yayımlama sihirbazını kullanın.
  3. Yayınlama başarılı olursa:
    • Orijinal proje kodunuzu yeni projeye taşıyın
    • Karşılaşmak istediğiniz nuget paketlerinin sürümlerine çok dikkat edin, bunların ve bağımlılıklarının v2 uyumlu olması gerekir
  4. Yayınlama başarılı DEĞİLSE
    • Visual Studio'nuzu en son sürüme yükselttiğinizden emin olun
    • Azure Araçlarınızın da en son sürüme yükseltildiğinden emin olun

Genel bir kural olarak, Azure İşlevleri ile genel başarı için:

  1. .Net Framework projeleri için veya referans projelerinizden herhangi birinde veya NuGET paketlerinde .Net Fx bağımlılıkları varsa v1 kullanın . (yani .Net 4 + ... veya .Net Core olmayan bir şey .)

    Bu bağımlılıklar birden fazla projeyi hedeflese bile, İşlevler ile dağıtım, dağıtım sırasında NuGET bağımlılıklarını değerlendirirken doğru platformu doğru bir şekilde algılayamadığından başarısız olma eğilimindedir.

  2. SADECE v2'yi .Net Core projeleri için kullanın , referanslarınızın sadece .Net core olduğundan emin olun

Kodunuzu aşamalı olarak derleyin ve yayınlayın, ayrıca kodunuzu sık sık İşlevler ile kontrol etmek için AzureDevOps veya GitHub veya diğer kaynak kodu depolarını kullanın. Bir Fonksiyonlar projesinin ilk aşamalarında genellikle çoklu referanslar ve NuGET paketleri getiririz ve dağıtım yaparken yerel olarak çalışır gibi görünürler.

  • kaynak kod repo kullanmak, yeni paketler yüklemeden önce değişikliklerin yapılmasını kolaylaştırır ve paketin yüklenmesi konuşlandırılamaz bir kodla sonuçlanırsa.
  • Dağınık görünüyor, ancak NuGet sürümlendirme nedeniyle, bir paketi yüklemeden önce duruma geri dönerek, bu paketi kaldırmak olarak kabul etmiyor, diğer paketleri kolayca yükseltmiş olabilir ve bu değişen Azure ortamında, birçok paket yazarları .Net Framework ile .Net Core arasındaki kaynaklardan kaynaklanır ve her zaman iyi bir şekilde yapmazlar veya bazen Azure İşlevlerinde çakışmalara neden olacak bazı .Net çerçeve öğelerini korurlar.

Yardımcı olabilecek bazı ilginç tartışmalar var:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.