Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Služby v místním prostředí, které používají přenos Net.TCP, mohou řídit několik upřesňujících nastavení, například ListenBacklog a MaxPendingAccepts, která řídí chování základního soketu TCP používaného pro síťovou komunikaci. Tato nastavení pro každý soket se však použijí pouze na úrovni vazby, pokud přenosová vazba zakázala sdílení portů, které je ve výchozím nastavení povoleno.
Když vazba net.tcp umožňuje sdílení portů (nastavením portSharingEnabled =true elementu transportní vazby), implicitně umožňuje externímu procesu (jmenovitě SMSvcHost.exe, který je hostitelem služby sdílení portů Net.TCP) spravovat soket TCP jeho jménem. Pokud například používáte protokol TCP, zadejte:
<tcpTransport portSharingEnabled="true" />
Při konfiguraci tímto způsobem jsou všechna nastavení soketu zadaná v elementu transportní vazby služby ignorována ve prospěch nastavení soketu určeného parametrem SMSvcHost.exe.
Chcete-li nakonfigurovat SMSvcHost.exe, vytvořte konfigurační soubor XML s názvem SmSvcHost.exe.config a umístěte jej do stejného fyzického adresáře jako spustitelný soubor SMSvcHost.exe (například C:\Windows\Microsoft.NET\Framework\v4.5).
Následující příklad znázorňuje ukázkový SMSvcHost.exe.configs výchozím nastavením pro všechny konfigurovatelné hodnoty, které jsou uvedeny explicitně.
<configuration>
<system.serviceModel.activation>
<net.tcp listenBacklog="16" <!-- 16 * # of processors -->
maxPendingAccepts="4"<!-- 4 * # of processors -->
maxPendingConnections="100"
receiveTimeout="00:00:30" <!-- 30 seconds -->
teredoEnabled="false">
<allowAccounts>
<!-- LocalSystem account -->
<add securityIdentifier="S-1-5-18"/>
<!-- LocalService account -->
<add securityIdentifier="S-1-5-19"/>
<!-- Administrators account -->
<add securityIdentifier="S-1-5-20"/>
<!-- Network Service account -->
<add securityIdentifier="S-1-5-32-544" />
<!-- IIS_IUSRS account (Vista only) -->
<add securityIdentifier="S-1-5-32-568"/>
</allowAccounts>
</net.tcp>
</system.serviceModel.activation>
</configuration>
Kdy upravit SMSvcHost.exe.config
Obecně platí, že při úpravách obsahu souboru SMSvcHost.exe.config je třeba postupovat opatrně, protože všechna nastavení konfigurace zadaná v tomto souboru mají vliv na všechny služby v počítači, který používá službu sdílení portů Net.TCP. To zahrnuje aplikace v systému Windows Vista, které používají funkce aktivace protokolem TCP služby WAS (Windows Process Activation Service).
Někdy však může být nutné změnit výchozí konfiguraci služby sdílení portů Net.TCP. Například výchozí hodnota pro maxPendingAccepts je 4 * počet procesorů. Servery, které hostují velký počet služeb využívajících sdílení portů, mohou tuto hodnotu zvýšit, aby dosáhly maximální propustnosti. Výchozí hodnota pro maxPendingConnections je 100. Zvýšení této hodnoty byste měli zvážit i v případě, že službu volá více souběžných klientů a služba zahazuje připojení klientů.
SMSvcHost.exe.config obsahuje také informace o identitách procesů, které mohou využívat službu sdílení portů. Když se proces připojí ke službě sdílení portů, aby využil sdílený port TCP, je identita procesu připojujícího se procesu porovnána se seznamem identit, které mohou službu sdílení portů využívat. Tyto identity jsou zadány jako identifikátory zabezpečení (SID) v <části allowAccounts> souboru SMSvcHost.exe.config. Ve výchozím nastavení je oprávnění k používání služby sdílení portů uděleno systémovým účtům (LocalService, LocalSystem a NetworkService) a také členům skupiny Administrators. Aplikace, které umožňují procesu běžícímu pod jinou identitou (například identitou uživatele) připojit se ke službě sdílení portů, musí do SMSvcHost.exe.config explicitně přidat příslušný identifikátor SID (tyto změny se nepoužijí, dokud nebude proces SMSvc.exe restartován).
Poznámka:
V systémech Windows Vista s povoleným nástrojem Řízení uživatelských účtů (UAC) vyžadují místní uživatelé zvýšená oprávnění i v případě, že je jejich účet členem skupiny Administrators. Aby tito uživatelé mohli využívat službu sdílení portů bez zvýšení oprávnění, musí být identifikátor SID uživatele (nebo identifikátor SID skupiny, jejímž je uživatel členem) explicitně přidán do <části allowAccounts> v SMSvcHost.exe.config.
Výstraha
Výchozí soubor SMSvcHost.exe.config určuje vlastní etwProviderId nastavení, které zabrání tomu, aby trasování SMSvcHost.exe narušovalo trasování služby.