15.10.2023, Vladimír Klaus, navštíveno 301x
WebDeploy je velice příjemná věc na publikování webu na hosting/server. Umí zobrazit náhled souborů, které bude třeba na server nahrát nebo přímo soubory aktualizuje. To může znamenat přidání, aktualizaci, ale také smazání. Často je operace spojená také s aktualizace ConnectionStringu, protože na serveru je jiné databáze než na lokálním počítači. To je všechno krásné, ale jen, když to funguje. A když to nefunguje, ukazují se dosti nesmyslné hlášky, což znamená, že není snadné nebo dokonce vůbec možné provést adekvátní opravu.
První věcí, na kterou můžete narazit je hned na začátku, kdy se pokoušíte připravit nastavení celého procesu.
Zdá se, že údaj v Server je správný, ale pak je někde chyba. Může to být jméno/heslo, jak uvádí následující dialog, ale také paradoxně název webu. Když tam totiž zadáte třeba "www.mujweb.cz" není to totéž jako "mujweb.cz".
Jak tedy správně vyplnit tento dialog? Pomocí IIS Managera a konfigurace. Nejdřív se ujistěte, že máte vytvořeného IIS Manager uživatele.
Ujistěte se, že je povolen a někam si poznamenejte jméno a heslo.
Pak už si můžete připravit publikační profil.
V dialogu zvolíte správného uživatele, případně vyplníte connection string, cestu, kde je msdeploy.axd (to bývá předvyplněno špatně) a tlačítkem Setup vygenerujete soubor, který se bude jmenovat dle vašeho uživatele a vašeho webu, tedy třeba uzivatel123_mujweb.cz.PublishSettings.
A to je XML, ze kterého pak správně vyplníte všechny údaje do výše uvedeného konfiguračního dialogu WebDeploy. Pak "Ověřit připojení projde", ale neprojde náhled před publikováním nebo publikování samotné.
S tím souvisí mnohem zábavnější hláška Při zpracování požadavku ve vzdáleném počítači došlo k chybě. Operaci nelze provést. Obraťte se na správce serveru, aby zkontroloval nastavení autorizace a delegování. Můžete řešit se správcem serveru oprávnění na složky, kontrolovat, zda uživatel "NT SERVICE\WMSVC" má nastaveno "Full control", zda jste správně přiřadili uživatele danému webu, budete zkoumat nastavení Firewallu, nebo budete šílet z toho, že lze ručně publikovat soubor nebo složka (takže všechny parametry jsou zřejmě správně), ale ne celý web.
Nakonec se ale dopátráte toho, že by se mělo uživateli WDeployConfigWriter (uživatel počítače, nikoliv IIS) zrušit vypršení hesla, protože to je příčinou výše uvedené hlášky.
Zobrazíte si tedy jeho vlastnosti a zrušíte vypršení hesla.
V tu chvíli by vše mělo začít konečně fungovat, ale to jen v případě, že máte ASP.NET Framework projekt. Pokud totiž jedete .NET Core projekt, pořád máte smůlu. Naštěstí i zde existuje postup, který je třeba udělat kromě výše uvedeného. Do publikačního profilu je třeba přidat tuto řádku:
<AllowUntrustedCertificate>true</AllowUntrustedCertificate>
Jak vidíte, měl jsem tam ještě připravený další řádek "UsePowerShell", který někdo doporučoval, ale ukázalo se, že není třeba.
Možná se ale při publikování setkáte s další nepříjemností, kterou je, že nemáte dostatečná práva k zápisu/modifikaci. Pak je třeba pro Users toto zkontrolovat, resp. nastavit.
Zdroje:
- https://stackoverflow.com/questions/11844555/webdeploy-issues-cannot-deploy-unless-admin
- https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/deployment-migration/web-deploy-error-codes#ERROR_CERTIFICATE_VALIDATION_FAILED
- https://blog.workinghardinit.work/2011/07/18/wdeployconfigwriter-account-issues-trouble-shooting-web-deploy-2-0-with-lessons-learned/
- https://www.softwareverify.com/blog/setting-directory-permissions-for-user-group-iis-iusrs/