首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenRasta是否支持HEAD HTTP方法?

OpenRasta是否支持HEAD HTTP方法?
EN

Stack Overflow用户
提问于 2011-11-01 02:26:00
回答 1查看 452关注 0票数 2

我正在尝试配置一个OpenRasta资源来响应HTTP HEAD操作。我已经尝试使用UriName,不同的方法名称和签名,但我还找不到解决方案。这是我使用的配置代码:

代码语言:javascript
复制
ResourceSpace.Has.ResourcesOfType<Stream>()
                 .AtUri("/assets/{providerCode}/?type={type}")
                 .HandledBy<AssetHandler>();

这是AssetHandler的方法

代码语言:javascript
复制
[HttpOperation(HttpMethod.HEAD)]
public OperationResult Head(string providerCode, int type)
{
    var asset = assetService.GetAssetAtCDN(providerCode, type);
    if (asset == null) return new OperationResult.NotFound();

    return new OperationResult.Found { RedirectLocation = new Uri(asset.Url) };
}

示例请求:

代码语言:javascript
复制
HEAD http://localhost:63483/assets/PygvCaOfK353etajBlbd/?type=4 HTTP/1.1
Accept-Encoding: gzip,deflate
Host: localhost:63483

响应:

代码语言:javascript
复制
HTTP/1.1 405 Method Not Allowed
Server: ASP.NET Development Server/9.0.0.0
Date: Mon, 31 Oct 2011 17:40:39 GMT
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Length: 0
Connection: Close

在OpenRasta日志中:

代码语言:javascript
复制
DEBUG Entering OpenRastaRewriterHandler: Rewriting to original path e:
DEBUG Entering OpenRastaIntegratedHandler: Request for http://localhost:63483/assets/PygvCaOfK353etajBlbd/?type=4 e:
DEBUG Found 0 operation(s) with a matching name. e:
DEBUG Found 0 operation(s) with matching [HttpOperation] attribute. e:
INFO Executing OperationResult OperationResult: type=MethodNotAllowed, statusCode=405. e:
INFO No response codec was searched for. The response entity is null or a response codec is already set. e:
DEBUG There was no response entity, not rendering. e:
DEBUG Writing http headers. e:
DEBUG Exiting OpenRastaIntegratedHandler e:
DEBUG Exiting OpenRastaRewriterHandler e:

这是web.config的干净版本:

代码语言:javascript
复制
  <system.web>
    <pages>
      <namespaces>
        <add namespace="OpenRasta.Web"/>
        <add namespace="OpenRasta.Web.Markup"/>
        <add namespace="OpenRasta"/>
      </namespaces>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </controls>
    </pages>
    <httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
      <!--OpenRasta-->
      <add verb="*" path="*.rastahook" type="OpenRasta.Hosting.AspNet.OpenRastaHandler, OpenRasta.Hosting.AspNet"/>
    </httpHandlers>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <!--OpenRasta-->
      <add name="OpenRastaModule" type="OpenRasta.Hosting.AspNet.OpenRastaModule, OpenRasta.Hosting.AspNet"/>
    </httpModules>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules>
      <remove name="ScriptModule"/>
      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="OpenRastaModule" type="OpenRasta.Hosting.AspNet.OpenRastaModule, OpenRasta.Hosting.AspNet"/>
    </modules>
    <handlers>
      <remove name="WebServiceHandlerFactory-Integrated"/>
      <remove name="ScriptHandlerFactory"/>
      <remove name="ScriptHandlerFactoryAppServices"/>
      <remove name="ScriptResource"/>
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      <add name="OpenRastaHandler" verb="*" path="*.rastahook" type="OpenRasta.Hosting.AspNet.OpenRastaHandler, OpenRasta.Hosting.AspNet"/>
    </handlers>
  </system.webServer>
EN

回答 1

Stack Overflow用户

发布于 2011-11-01 03:20:56

您可以使用ResourcesNamed来执行以下操作:

代码语言:javascript
复制
ResourceSpace.Has.ResourcesNamed("head")
             .AtUri("/assets/{providerCode}/?type={type}")
             .HandledBy<AssetHandler>();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7957969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档