我在Azure中有一个使用node.js和socket.io的Web应用程序,我决定使用IISNODE支持的群集,在我的web.config中使用nodeProcessCountPerApplication,如下所示
<iisnode nodeProcessCountPerApplication="0" />
但是,当我应用它时,我得到500.1013内部服务器错误,其中指出:
最有可能的原因: IIS收到了请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于哪个模块处理请求以及发生此错误时工作进程中发生的情况。 IIS无法访问网站或应用程序的web.config文件。如果NTFS权限设置不正确,则会发生这种情况。 IIS无法处理网站或应用程序的配置。 经过身份验证的用户无权使用此DLL。 请求将映射到托管处理程序,但未安装.NET可扩展性功能。
我找了一些例子,但找不到类似的东西。我想知道我在这里做错了什么。我希望能够使用我机器的所有处理器。 谢谢!
答案 0 :(得分:1)
我可以使用以下web.config
文件来使用我的App Service计划的所有处理器。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<webSocket enabled="false" />
<handlers>
<add name="iisnode" path="app.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^app.js\/debug[\/]?" />
</rule>
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}" />
</rule>
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" />
</conditions>
<action type="Rewrite" url="app.js" />
</rule>
</rules>
</rewrite>
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="bin" />
</hiddenSegments>
</requestFiltering>
</security>
<httpErrors existingResponse="PassThrough" />
<iisnode watchedFiles="web.config;*.js" devErrorsEnabled="true" nodeProcessCountPerApplication="0" />
</system.webServer>
</configuration>
当您在Azure Web App上使用socket.io时,您还需要在Azure门户中将Web sockets
设置为On
。请参阅Using socket.io-redis on azure web service。