Asp.net 使用自定义路径时忽略ServiceStack web.config设置 介绍
My ServiceStack服务处理通常包含句点的路由参数,即:Asp.net 使用自定义路径时忽略ServiceStack web.config设置 介绍,asp.net,iis,web-config,asp.net-mvc-routing,servicestack,Asp.net,Iis,Web Config,Asp.net Mvc Routing,servicestack,My ServiceStack服务处理通常包含句点的路由参数,即: /people/search/b.j./upton。最初,asp.net/ServiceStack遇到此路由时会引发“404-找不到”异常。我尝试编码%2E句点,但运气不好,但在看到一些相关问题后,通过在我的web.config中设置relaxedUrlToFileSystemMapping属性()最终解决了问题 问题 直到今天,我不得不通过将(如上所述)添加到我的web.config中,将我的服务位置从默认路径更改为自定义路径
/people/search/b.j./upton
。最初,asp.net/ServiceStack遇到此路由时会引发“404-找不到”异常。我尝试编码%2E
句点,但运气不好,但在看到一些相关问题后,通过在我的web.config
中设置relaxedUrlToFileSystemMapping
属性()最终解决了问题
问题
直到今天,我不得不通过将
(如上所述)添加到我的web.config中,将我的服务位置从默认路径更改为自定义路径,这一切都非常有效。自从在web.config中添加位置节点后,relaxedUrlToFileSystemMapping
设置不再应用,带有句点/api/people/search/b.j./upton
的我的路由再次中断,导致ServiceStack出现“404-未找到”异常
安装程序
ServiceStack-v3.9.56
IIS 7.5/IIS Express(发生在两者上)
web.config:
<location path="api">
<system.web>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
<httpRuntime relaxedUrlToFileSystemMapping="true"/>
...
</location>
...
问题:
有人知道为什么在web.config中将relaxedUrlToFileSystemMapping
属性从默认路径移动到我的自定义
中时会忽略它吗
谢谢 您是否更改了AppHost文件中的
public override void Configure(Container container)
{
SetConfig(new EndpointHostConfig { ServiceStackHandlerFactoryPath = "api" });
}
在对我的web.config进行了一些修补之后,我通过将
relaxedUrlToFileSystemMapping
条目移动到
节点之外它自己的节点来解决这个问题。我不确定这是否是一种推荐的方法(多个
条目?),或者可能会导致一些其他冲突,但是在运行了服务的完整系统测试之后,一切又正常了,所以我现在就用它
我更新并完整的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>
我错过了这一点,并没有运气尝试了它,它似乎没有任何区别,没有它,路由似乎工作得很好。这似乎不再需要了-至少在3.9.56中是这样。很高兴您能够找到解决方案。别忘了将此标记为答案。