我正在开发一个ASP.NET MVC3 Web应用程序(不是我编写的),其最大上载大小为100MB.现在,此Web应用程序已安装在客户端的服务器计算机上,因此,如果可以为每个客户配置此值最大上载大小,那将会很好.如果需要,他们可以访问Web应用程序的web.config.
现在web.config中有一个值,如下所示:
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="104857600" />
</requestFiltering>
</security>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
此外还有另一个值似乎相似:
<system.web>
<httpRuntime maxRequestLength="104857600" executionTimeout="360" />
</system.web>
Run Code Online (Sandbox Code Playgroud)
104857600字节似乎是100MB文件上载限制.但是,在更改值时,我发现这不是权威值,并且它不遵守新限制.因此,在进行了一些挖掘后,我发现C#代码中的其他位置是硬编码值public const double MaxContentSize = 104857600,另一个C#方法使用该值来接受/拒绝Ajax文件上载.
所以我想我想做的是替换代码中的硬编码数字,以便从web.config中的值读取.然后,至少任何人都可以在部署网站时在web.config中更改该值.
你能做这样的事吗?
MaxContentSize = ConfigurationManager.systemWeb.httpRuntime['maxRequestLength'];
Run Code Online (Sandbox Code Playgroud)
我在web.config中看过一些使用appSettings的例子,例如
<appSettings><add key="MySetting" value="104857600" /></appSettings>
Run Code Online (Sandbox Code Playgroud)
然后访问它像:
ConfigurationManager.AppSettings["MySetting"]
Run Code Online (Sandbox Code Playgroud)
但这意味着在那里添加自定义值,现在我们在web.config中有3个位置可以更改它.任何人都知道如何正确地做到这一点?
非常感谢
确定 ServiceStack 实例运行的基本 URL 路径的最佳方法是什么?例如,如果我将 ServiceStack 配置为在 web.config 中的“/api”基本 URL 上运行,如何获取字符串“/api”?我想获取此值以便构建任意请求 DTO 的 URL,如 HATEOAS 样式文档。
例如,如果我有一个SomeRequest带有[Route("/someRequest")]属性的请求 DTO,则该请求的完整 URL 将是“/api/someRequest”。扩展ToUrl方法仅返回基本 URL 下面的部分路径:
new SomeRequest().ToUrl() // returns "/someRequest"
Run Code Online (Sandbox Code Playgroud)
我还没有找到任何简单的方法来做到这一点。ServiceStack 似乎没有公开返回“/api”基本路径值的配置属性。在 ServiceStack 4 中可能可以检查 web.config以获取 ServiceStack 处理程序路径,但我无法弄清楚如何使用当前的 SS 3 配置来执行此操作。
该Request.GetAbsolutePath()方法将生成当前请求的完整路径,例如“/api/someRequest”,然后我可以在它和扩展ToUrl()方法之间进行一些字符串比较来确定基本路径,但这似乎也是一个非常脆弱的解决方案。
有没有更好的方法来获取这个基本 URL?