15.10.2023, Vladimír Klaus, navštíveno 366x

ASP.NET/C#
Systém

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.

WebDeploy a problémy při pokusu o publikování webu, obr. 1

První věcí, na kterou můžete narazit je hned na začátku, kdy se pokoušíte připravit nastavení celého procesu.

WebDeploy a problémy při pokusu o publikování webu, obr. 2

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".

WebDeploy a problémy při pokusu o publikování webu, obr. 3

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.

WebDeploy a problémy při pokusu o publikování webu, obr. 4

Ujistěte se, že je povolen a někam si poznamenejte jméno a heslo.

WebDeploy a problémy při pokusu o publikování webu, obr. 5

Pak už si můžete připravit publikační profil.

WebDeploy a problémy při pokusu o publikování webu, obr. 6

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.

WebDeploy a problémy při pokusu o publikování webu, obr. 7

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é.

WebDeploy a problémy při pokusu o publikování webu, obr. 8

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.

WebDeploy a problémy při pokusu o publikování webu, obr. 9

Zobrazíte si tedy jeho vlastnosti a zrušíte vypršení hesla.

WebDeploy a problémy při pokusu o publikování webu, obr. 10

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>

WebDeploy a problémy při pokusu o publikování webu, obr. 11

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.

WebDeploy a problémy při pokusu o publikování webu, obr. 12

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.

WebDeploy a problémy při pokusu o publikování webu, obr. 13

Zdroje: