一、问题概述:
最近开发上传视频文件的功能。基本流程已经跑通了,可是上传30M以上的文件时就会报错。
二、资料海洋瞎扑腾
从网上查了一些资料,一般都是下面这种说法:
看着步骤倒是也不算繁琐,可是本人照着步骤做了却没找到所说的<requestLimits>节点。无奈了。如果有高人明白咋回事的话麻烦指点下。。。
三、暮然回首,答案就在灯火阑珊处
其实上面分析的错误原因是对的,就是IIS中允许上传的最大文件默认是20多M,所以当上传较大的文件时才会报这个错误。后来用另外一种途径修改了这种设置。
目标是要修改文件C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml 。绿色下划线部分使我们要修改的目标位置。
<element name="requestLimits">
<attribute name="maxAllowedContentLength" type="uint" defaultValue="30000000" />
<attribute name="maxUrl" type="uint" defaultValue="4096" />
<attribute name="maxQueryString" type="uint" defaultValue="2048" />
<element name="headerLimits">
<collection addElement="add" clearElement="clear" removeElement="remove">
<attribute name="header" type="string" required="true" isUniqueKey="true" validationType="nonEmptyString" />
<attribute name="sizeLimit" type="uint" required="true" />
</collection>
</element>
<attribute name="maxAllowedContentLength" type="uint" defaultValue="30000000" />
<attribute name="maxUrl" type="uint" defaultValue="4096" />
<attribute name="maxQueryString" type="uint" defaultValue="2048" />
<element name="headerLimits">
<collection addElement="add" clearElement="clear" removeElement="remove">
<attribute name="header" type="string" required="true" isUniqueKey="true" validationType="nonEmptyString" />
<attribute name="sizeLimit" type="uint" required="true" />
</collection>
</element>
问题在于,这个文件是只读的,即使用管理员权限也不能修改。要先修改文件的权限,然后去掉只读属性才可以。
1.右键文件->属性->安全,选中目标用户,点击高级,修改文件所有者;
2.确定后点击编辑,就可以修改当前用户的权限了,添加“写入”权限。至此,权限设置OK了。
3.将文件的只读属性去掉。
4.以管理员身份打开VS,然后在VS中编辑目标XML文件,修改所需位置即可。
5.上传个100M的视频,OK了。
至此,大功告成。