我在Windows Azure Web角色上设置了ASP.NET自动启动(我在Windows Server 2012上使用ASP.NET 4.5和IIS 8).我基本上遵循了这些指示.
我通过webrole的OnStart方法startMode="AlwaysRunning"在应用程序池和preloadEnabled="true"网站上进行设置.
我使用远程访问并验证这两个属性是否已正确设置(通过IIS管理器,以及检查applicationHost.config文件).
我还将此添加到web.config文件中:
<applicationInitialization skipManagedModules="true">
<add initializationPage="/" />
</applicationInitialization>
Run Code Online (Sandbox Code Playgroud)
此页面显示启用自动启动时应禁用空闲超时.但是,我可以从我的日志中看到它不是,应用程序池在一些不活动后重新启动.我还可以在事件日志中看到(多次超过6小时):
随着"772"服务应用程序池"cf9d3284-6454-4bbf-8a8e-efd73df4ed83"进程ID工作进程被关闭,由于闲置.应用程序池超时配置设置为20分钟.必要时将启动新的工作进程.
奇怪的是,它似乎是一个新的应用程序池,这是记录后立即启动,即使该网站没有任何请求.所以,如果我没有在一小时内获得一个请求,我们的应用程序池被回收并重新启动3次(我证实了这一点从日志).我的配置不正确还是我错过了什么?
我在Windows Server 2012 R2上的IIS 8.5中,我想看看会话超时是什么.
在"功能视图"下,我看到一个会话类别,所以我打开它.会话状态设置为进程中.在窗口的下方,我看到了设置超时的选项,但它们是用于cookie的.我查看了应用程序池,看到空闲超时设置为20分钟:这是会话超时吗?我已经习惯了IIS 7,点击"ASP"功能并将其设置在那里.
我正在尝试在MVC 4应用程序中使用PUT,我收到405错误.
在我的路由中,我对允许PUT和POST的路由有约束,POST到端点工作,PUT失败了405.
我已经按照这里的建议ASP.NET Web API仅在某些服务器上返回404 for PUT,这里ASP.NET MVC在HTTP DELETE请求上得到405错误?
我也从IIS中删除了WeDAV,但我仍然得到了405.任何人还有其他建议吗?
我在IIS 8(使用Visual Studio 2012)上也遇到了完全相同的问题,因为我遵循了这个建议ASP.NET Web API - PUT&DELETE动词不允许 - IIS 8仍然没有运气
我试图理解为什么在浏览虚拟目录时我的默认文档没有出现.如果我像我应该那样浏览网站,我会得到这个:

但是,如果我将页面添加到URL,它会出现:

一个SO答案建议删除除真实文档之外的所有默认文档(在IIS中).我尝试过(图片如下),但没有帮助.

使用根URL(http://localhost/SignalRChat)时,为什么IIS不会提供该页面?
删除默认文档后,这是web.config的相关部分:
<defaultDocument>
<files>
<remove value="default.aspx" />
<remove value="iisstart.htm" />
<remove value="index.html" />
<remove value="index.htm" />
<remove value="Default.asp" />
<remove value="Default.htm" />
<add value="ChatPage.cshtml" />
</files>
</defaultDocument>
Run Code Online (Sandbox Code Playgroud)
这是处理程序部分:
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
Run Code Online (Sandbox Code Playgroud) 内核模式缓存和用户模式缓存之间有什么区别以及如何跟踪它们?
我们的ASP.NET MVC Web应用程序有一些我们用于测试和遗留代码的不同子域.子域名是:
我们故意使用不使用域级cookie的表单身份验证,因为我们希望cookie在这些不同的子域中是唯一的.问题是,当人们获得到根域(sitename.com)的链接时,它需要他们再次登录才能获得cookie,即使他们已经登录到www.sitename.com.
是否有共享的cookie的办法只有没有其他子域www.sitename.com和sitename.com受到影响?
我已经创建了WCF Web服务并使用InstallAware创建了设置,以便我们的客户只需运行安装程序,它将在IIS中部署Web服务.我的设置在IIS中的"默认网站"下创建虚拟目录.一切正常,我的设置在"默认网站"下创建虚拟目录并指向正确的路径,但只有在设置完成之前它才会出错.以下是在IIS中创建虚拟目录的代码.
if Variable SUCCESS not Equals ERROR
if Variable SUCCESS not Equals CANCEL
Run Program $SUPPORTDIR$\InsertToken1.bat (WAIT)
Get IIS Index for Site "Default Web Site" into DEFAULTWEBSITEINDEXVAR
Create Virtual Folder "WebService" in IIS Site #$DEFAULTWEBSITEINDEXVAR$, pointing to physical location $WWWROOTDIR$WebService
Get System Setting IIS Anonymous User Account into INETUSR
Set Read Permissions on File System Object "$WWWROOTDIR$\WebService" for $INETUSR$
end
end
Run Code Online (Sandbox Code Playgroud)
在调试MSI代码后,我发现当后续行执行时会给出错误
Create Virtual Folder "WebService" in IIS Site #$DEFAULTWEBSITEINDEXVAR$, pointing to physical location $WWWROOTDIR$WebService
Run Code Online (Sandbox Code Playgroud)
它给出了以下错误
在Windows Server 2012R2上运行
我试图在IIS上禁用TLS 1.0,因为客户端有一个站点扫描程序,突出显示这是一个安全问题.
我有一个干净的测试服务器设置和应用程序正常运行,直到我禁用TLS 1.0.
我更新了所有适当的设置:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"Enabled"=dword:ffffffff
"DisabledByDefault"=dword:00000000
Run Code Online (Sandbox Code Playgroud)
在事件查看器中,我得到:
生成致命警报并将其发送到远程端点.这可能导致连接终止.TLS协议定义的致命错误代码为70.Windows SChannel错误状态为105.
如果我还原TLS 1.0(启用,而不是DisabledByDefault)的注册表设置,一切都很好.
在system.web中使用:
<httpRuntime targetFramework="4.7.2" />
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我正在尝试使用ServerManager.OpenRemote(来自Microsoft.Web.Administration),但无法找到有关如何从当前用户提供不同凭据的文档.我尝试过SimpleImpersonation(来自你如何在.NET中进行模拟?)它给了我同样的错误:
System.UnauthorizedAccessException - 由于以下错误,从机器[...]检索具有CLSID {2B72133B-3F5B-4602-8952-803546CE3344}的远程组件的COM类工厂失败:80070005 [...]."
远程计算机上的防火墙已关闭.UAC已禁用.
我已在具有新站点的本地Windows 2012服务器上设置了Web部署.
我已在IIS服务器级别和站点级别通过IIS管理器权限设置管理员权限.
我为MySiteApp创建了一个应用程序池和一个虚拟目录.
My Web Deploy在VS.NET 2015上发布设置:
服务器:192.168.45.60站点名称:TestSite/MySiteApp用户名:TESTSERVER\Administrator
验证发布配置文件上的连接传递确定.
添加True到.pubxml
尝试发布到服务器时,我收到错误:
错误错误:远程服务器返回错误:(401)未经授权.错误代码:ERROR_USER_UNAUTHORIZED
在Windows Server 2012事件查看器中,我可以看到此错误:
IISWMSVC_LOGIN_UNKNOWN_ERROR
检索登录信息时发生意外错误.
异常:System.Runtime.InteropServices.COMException(0x8007000D):站点名称无效
Microsoft.Web.Administration.SiteCollection.get_Item(String)上的Microsoft.Web.Administration.Interop.IAppHostProperty.set_Value(Object value)at Microsoft.Web.Administration.ConfigurationElementCollectionBase`1.FindElementWithCollectionKey(String elementName,String collectionKey,Object value)在Microsoft.Web.Management.Server.WebManagementHttpModule的Microsoft.Web.Management.Server.ApplicationManagementUnit..ctor(IManagementContext context,String siteName,String applicationPath)上的Microsoft.Web.Management.Server.ApplicationManagementUnit.EnsureDefinition()处. Microsoft.Web.Management.Server.WebManagementHttpModule.OnApplicationPostAuthorizeRequest(Object sender,EventArgs e)中的CreateManagementUnit(HttpRequest请求)
进程:WMSvc User = TESTSERVER\Administrator
如果我在.pubxml更改如下:
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
至
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
Run Code Online (Sandbox Code Playgroud)
并添加 <AuthType>NTLM</AuthType>
然后我就可以毫无问题地发布了.
我想我没有正确设置WMSVC发布的东西.
谢谢你的帮助.
阿萨夫
iis-8 ×10
asp.net ×5
iis ×3
iis-7.5 ×2
.net ×1
asp.net-core ×1
asp.net-mvc ×1
azure ×1
caching ×1
cookies ×1
http-put ×1
http.sys ×1
installaware ×1
security ×1
ssl ×1
subdomain ×1
web-services ×1
webdeploy ×1