ASP.NET的自定义文件扩展名 - 需要帮助!

时间:2011-05-14 19:12:25

标签: .net asp.net apache httphandler file-extension

我已经在我的Apache 2.2服务器上运行了modaspdotnet,因此它可以很好地运行ASP.NET和MySQL。

但是,我想要做的是使用其他扩展程序提供内容,而不仅仅是默认的.aspx,例如: myfile.customextension。

在Apache中,我相信它是通过.htaccess完成的,但在ASP.NET中它是通过web.config完成的。

这是我的web.config文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
  </system.web>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".testing1" mimeType="application/x-asp-net " />
        </staticContent>
    </system.webServer>

</configuration>

它可以工作,但ASP.NET代码无法正确呈现 - 我希望能够使用任何自定义扩展来运行ASP.NET代码。

安装了IIS和NET 3.5。

我不想运行完整的IIS服务器,但是我需要为我正在进行的项目使用ASP.NET,因此Apache的modaspdotnet附加组件。

这是我的httpd.conf的最后一行,表示安装modaspdotnet:

    LoadModule aspdotnet_module modules/mod_aspdotnet.so

# Use the asp.net handler for all common ASP.NET file types
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj \
                   licx rem resources resx soap vb vbproj vsdisco webinfo 
<IfModule mod_aspdotnet.cpp> 
  # For all virtual ASP.NET webs, we need the aspnet_client files
  # to serve the client-side helper scripts.
  AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) "C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4"
  <Directory "C:/Windows/Microsoft.NET/Framework/v*/ASP.NETClientFiles">
    Options FollowSymlinks
    Order allow,deny
    Allow from all
  </Directory>
</IfModule>
#asp.net 
AddType application/x-asp-net .asp
AddType text/html .asp
AddHandler application/x-httpd-php .asp

为什么这对我不起作用,我该怎么做才能解决这个问题? 我看了一下网,但找不到太多......有什么想法吗?

1 个答案:

答案 0 :(得分:1)

简单添加mime类型是不够的 - 页面不是插入的,而是简单地流式传输到浏览器。 我对apache了解不多。但通常当您想要提供普通的aspx页面但具有不同的扩展名时,您必须:

  1. 在自定义扩展程序下添加默认的aspx httphandler,如下所示:
  2.  <httpHandlers>
    ...
    <add verb="*" path="*.mycustomextension"> type="System.Web.UI.PageHandlerFactory"/>
    
    1. 注册构建提供程序:
    2. <compilation >
            <buildProviders>
                <add extension=".mycustomextension" type="System.Web.Compilation.PageBuildProvider" /> 
            </buildProviders>
      

      尝试一下也许这会指出你正确的方向