相关疑难解决方法(0)

如何从web.config读取系统值并在ASP.NET MVC C#方法中使用

我正在开发一个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个位置可以更改它.任何人都知道如何正确地做到这一点?

非常感谢

asp.net iis-7 configurationmanager web-config asp.net-mvc-3

27
推荐指数
3
解决办法
2万
查看次数

获取ServiceStack实例的基本URL

确定 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?

c# hateoas servicestack servicestack-bsd

2
推荐指数
1
解决办法
2908
查看次数