asp.net - 使用自定义路径时忽略 ServiceStack web.config 设置

标签 asp.net iis web-config asp.net-mvc-routing servicestack

简介

我的 ServiceStack 服务处理通常包含句点的路由参数,即: /people/search/b.j./upton .最初,asp.net/ServiceStack 在遇到此路由时会抛出“404 - Not Found”异常。我尝试编码 %2E运气不好的时期,但在通过设置 relaxedUrlToFileSystemMapping 看到一些相关问题后最终解决了问题我的 web.config 中的属性( info ) .

问题

直到今天我不得不通过添加 <location path="api"> 将我的服务位置从默认路径更改为自定义路径时,它一直运行良好(如描述 here )到我的 web.config。由于在 web.config 中添加了位置节点 relaxedUrlToFileSystemMapping设置不再适用,我的路线带有句点 /api/people/search/b.j./upton再次中断导致 ServiceStack 出现“404 - Not Found”异常。

设置

ServiceStack - v3.9.56

IIS 7.5/IIS Express(同时出现)

网络配置:

    <location path="api">
        <system.web>
          <httpHandlers>
            <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
          </httpHandlers>

           <httpRuntime relaxedUrlToFileSystemMapping="true"/>

    ...

    </location>

问题

任何人都知道为什么 relaxedUrlToFileSystemMapping当属性从默认路径移动到我的自定义路径时被忽略 <location path="api">在 web.config 中?

谢谢!

最佳答案

在修改我的 web.config 之后,我能够通过移动 relaxedUrlToFileSystemMapping 来解决这个问题。在 <location> 之外进入它自己的节点节点。我不确定这是否是推荐的方法(多个 <system.web> 条目?)或者可能会导致其他一些冲突,但是在对服务进行完整的系统测试后,一切都再次正常工作,所以我将继续这样做现在。

我更新和完整的 web.config 以供引用:

<configuration>

  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>
  </system.web>

  <location path="api">

    <system.web>
      <httpHandlers>
        <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
      </httpHandlers>
    </system.web>

    <connectionStrings>
      <add name="AppDb" connectionString="data source=AppHost\SQLEXPRESS;Initial Catalog=db;User Id=AppUser;password=AppPwd;" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true" />
      <validation validateIntegratedModeConfiguration="false" />
      <handlers>
        <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
      </handlers>
    </system.webServer>
  </location>

</configuration>

关于asp.net - 使用自定义路径时忽略 ServiceStack web.config 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18035318/

相关文章:

jquery - 使用 jquery 更改隐藏字段值并在服务器中获取新值

windows - IIS 多个站点在同一个 ip 上,具有不同的 ssl

.net - 无法使用基本身份验证进行身份验证

asp.net - 测试: I *want* to test web.配置

apache - 将 .htaccess 转换为 web.config

c# - 如何获取目录名称

asp.net - 什么是支持用向后兼容的等价物替换 HTML5 标签的 ASP.NET 的好 HTML 库?

ASP.Net MVC 身份验证 - 基于角色隐藏 View 中的元素

php - NetBeans + 多个 php 版本 + 没有 PEAR 的 phpUnit

asp.net - .NET 4 上的 "A potentially dangerous Request.Path found...",requestValidationMode= "2.0"和 validateRequest= "false"设置