2010-05-18 30 views
1

我有一个场景,我的应用程序将发布PC和移动设备都使用的服务,并且我有一个HTTPModule,我只想对移动请求执行工作。所以我认为这样做的最好方式是将移动请求指向不同的文件扩展名,并让HTTPModule决定仅在请求针对此新扩展时才处理。可能将新的文件扩展名映射到ASP.NET中的现有处理程序?

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

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

二,这是正确的做法吗?我是否会以错误的方式分离和管理移动设备与PC请求?

谢谢, 戴夫

回答

1

是的,这是可以注册自定义文件扩展名,并把它与现有的.NET运行时的工作。您可以执行以下步骤。

您需要在IIS(假设IIS 7)中添加一个ScriptMap并将其指向ASP.NET运行时,以便IIS可以将该请求转发给正确的处理器。

  1. 在IIS7去你的网站,或IIS根服务器级
  2. 下IIS组登记去处理程序映射
  3. 在操作下单击添加脚本映射
  4. 设置请求路径* .xxxx
  5. 设置路径到ASP.NET运行时(%windir%\ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_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> 
相关问题