0

我在 .NET 中做一个包含服务器文件 (.asmx) 和客户端接口 (.aspx) 的 Web 服务。访问者应该只能访问客户端 aspx 站点 (urlXXX:portYY/Client.aspx) 但是,当我从 URL 中删除“/Client.aspx”部分时,我会进入项目目录,这应该是不可能的. (到目前为止,我只是在 localhost 上运行该项目。)

有什么办法,如何限制进入解决方案的其他部分?我能想到的唯一可能性是为客户端 aspx 站点创建一个单独的项目,但是,即使这样,访问者也能够进入包含该站点的目录。

4

2 回答 2

1

您应该能够使用 web.config 控制显式访问。看看这个例子(感叹:我直接从这个 MS 页面复制了这个):

<configuration>
    <system.web>
        <authentication mode="Forms" >
            <forms loginUrl="login.aspx" name=".ASPNETAUTH" protection="None" path="/" timeout="20" >
            </forms>
        </authentication>
<!-- This section denies access to all files in this application except for those that you have not explicitly specified by using another setting. -->
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
<!-- This section gives the unauthenticated user access to the Default1.aspx page only. It is located in the same folder as this configuration file. -->
        <location path="default1.aspx">
        <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
        </system.web>
        </location>
<!-- This section gives the unauthenticated user access to all of the files that are stored in the Subdir1 folder.  -->
        <location path="subdir1">
        <system.web>
        <authorization>
            <allow users ="*" />
        </authorization>
        </system.web>
        </location>
</configuration>

编辑:查看此问题以获取有关拒绝访问显式文件夹的更多信息。

于 2013-07-11T08:14:47.723 回答
0

所以,基本上我已经设法找到一个解决方法,通过将以下代码添加到 Web.config 中:

<system.webServer>
    <defaultDocument>
        <files>
            <add value="Client.aspx" />
        </files>
     </defaultDocument>
</system.webServer>

...这使客户端成为默认网页,从而阻止查看目录。但是,如果有人提出更精细和更复杂的解决方案,我将保留此主题。

于 2013-07-11T11:02:07.987 回答