Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将新文件扩展名映射到ASP.NET中的现有处理程序?_Asp.net_Web Services_Asmx_Httphandler_Httpmodule - Fatal编程技术网

是否可以将新文件扩展名映射到ASP.NET中的现有处理程序?

是否可以将新文件扩展名映射到ASP.NET中的现有处理程序?,asp.net,web-services,asmx,httphandler,httpmodule,Asp.net,Web Services,Asmx,Httphandler,Httpmodule,我有一个场景,我的应用程序将发布PC和移动设备都使用的服务,我有一个HTTPModule,我只想在移动请求上执行工作。因此,我认为最好的方法是将移动请求指向另一个文件扩展名,并让HTTPModule决定仅在请求以这个新扩展名为目标时进行处理 我不需要新扩展的定制HTTPHandler;我想像普通的.ASMX服务一样对服务进行编程,只是使用不同的扩展 首先,我可以这样做吗?如果是这样的话,我该如何做才能像处理.ASMX请求一样处理对新扩展的请求 第二,这是正确的方法吗?我是否打算以错误的方式分离和

我有一个场景,我的应用程序将发布PC和移动设备都使用的服务,我有一个HTTPModule,我只想在移动请求上执行工作。因此,我认为最好的方法是将移动请求指向另一个文件扩展名,并让HTTPModule决定仅在请求以这个新扩展名为目标时进行处理

我不需要新扩展的定制HTTPHandler;我想像普通的.ASMX服务一样对服务进行编程,只是使用不同的扩展

首先,我可以这样做吗?如果是这样的话,我该如何做才能像处理.ASMX请求一样处理对新扩展的请求

第二,这是正确的方法吗?我是否打算以错误的方式分离和管理移动和PC请求

谢谢,
Dave

是的,可以注册自定义文件扩展名并使其与现有的.NET运行时配合使用。您可以执行以下步骤

您需要在IIS中添加脚本映射(假定为IIS 7)并将其指向ASP.NET运行时,以便IIS可以将请求转发到正确的处理器

  • 在IIS7中,转到您的网站或IIS根目录在服务器级别注册
  • 在IIS组下,转到处理程序映射
  • 在“操作”下,单击“添加脚本映射”
  • 将请求路径设置为*.xxxx
  • 设置ASP.NET运行时(%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet\u isapi.dll)或运行的任何版本的路径
  • 然后,您需要注册文件扩展名的自定义生成提供程序,以便.NET运行时可以预编译您的代码,前提是您希望它与*.asmx服务类似

    以下是一些内置生成提供程序的列表:

    <system.web>
        <compilation>
            <buildProviders>
               <add extension=".aspx" type="System.Web.Compilation.PageBuildProvider" />
               <add extension=".ascx" type="System.Web.Compilation.UserControlBuildProvider" />
               <add extension=".master" type="System.Web.Compilation.MasterPageBuildProvider" />
               <add extension=".asix" type="System.Web.Compilation.ImageGeneratorBuildProvider" />
               <add extension=".asmx" type="System.Web.Compilation.WebServiceBuildProvider" />
               <add extension=".ashx" type="System.Web.Compilation.WebHandlerBuildProvider" />
               <add extension=".soap" type="System.Web.Compilation.WebServiceBuildProvider" />
               <add extension=".resx" type="System.Web.Compilation.ResXBuildProvider" />
               <add extension=".resources" type="System.Web.Compilation.ResourcesBuildProvider" />
               <add extension=".wsdl" type="System.Web.Compilation.WsdlBuildProvider" />
               <add extension=".xsd" type="System.Web.Compilation.XsdBuildProvider"/>
               <add extension=".js" type="System.Web.Compilation.ForceCopyBuildProvider" />
            </buildProviders>
        </compilation>
    </system.web>
    
    
    
    您很可能只需复制一个现有的生成提供程序,该提供程序基于与您正在执行的操作最匹配的提供程序,并将其注册到您的应用程序web.config中

    <system.web>
        <compilation>
            <buildProviders>
               <add extension=".xxxx" type="System.Web.Compilation.WebServiceBuildProvider" />
            </buildProviders>
        </compilation>
    </system.web>