什么是.NET平台文件扩展名?

时间:2011-07-24 18:03:58

标签: .net asp.net mono nginx file-extension

我已在我的Linux服务器上安装了mono平台,并且我能够在nginx HTTP服务器后面运行它。该系统运行良好,完美地提供.NET特定的动态文件。

但是,我想只将(并且只)必需的文件(通过扩展名)传递给mono,让nginx处理所有其他文件,包括静态文件和.NET平台上正常情况下不应该提供的文件。我已经配置了我的nginx,如下所示,但是 - 因为我对.NET平台知之甚少 - 我不确定哪些扩展应该必须传递给mono,哪些必须被禁止。< / p>

以下是我的nginx配置文件的相关部分:

# Do not pass .NET forbidden extensions to anywhere.
# Theese are the extensions that should not be served to the clients
location ~ \.(config|dbml|dll|master|other|forbidden|exts)$ {
    deny all;
}

以下是将所需(仅限必需)文件传递给mono:

的配置部分
# Theese are the extensions which *must* be handled by mono
location ~ \.(aspx|cs|other|exts|that|must|be|handled|by|mono)$ {
    fastcgi_pass    127.0.0.1:9000;
    fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include         fastcgi.conf;
    fastcgi_index   default.aspx;
}

# Other static files will be handled by nginx.

我从Wikipedia entry找到了一些特定于.NET的文件扩展名,但它们还远未完成。

所以我的问题有三个子问题:

  • 什么是特定于.NET平台的文件扩展名?
  • 其中哪些必须由.NET引擎处理?
  • 其中哪些是保密的,不得向客户提供?

这将是一个共享托管环境,因此任何遗漏的扩展都可能对用户造成不良影响(例如,显示用户密码或应用程序设置)。

1 个答案:

答案 0 :(得分:7)

最容易看的地方可能是主web.config文件,它是声明ASP.NET基本设置的地方。这包括<httpHandlers>,例如:

<httpHandlers>
  <add verb="*" path="*.rules" type="System.Web.HttpForbiddenHandler" validate="true"/>
  <add verb="*" path="*.xoml" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/>
  <add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/>
  <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True"/>
  <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True"/>
  <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True"/>
  <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True"/>
  <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True"/>
  <add path="*.asmx" verb="*" type="System.Web.Services.Protocols.WebServiceHandlerFactory, System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="False"/>
  <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False"/>
  <add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="False"/>
  <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True"/>
  <add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True"/>
  <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.dd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ldd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.adprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.lddprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.exclude" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*.refresh" verb="*" type="System.Web.HttpForbiddenHandler" validate="True"/>
  <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True"/>
  <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True"/>
</httpHandlers>