2013-08-20 105 views
1

我们最近将我们的登台服务器迁移到新的托管服务提供商,并在托管帐户控制面板中设置了表单身份验证,以便抓取工具和不需要的访问者无法访问它。在同一站点内访问密码保护网站上的.ASPX页面

现在我们发现至少有一个由于HTTP 401未授权而导致网站逻辑失败的区域。

有一部分网站为网站用户生成PDF。转换是从HTML到PDF。源页面是用C#编写的.ASPX。通过使用他们的URL下载ASPX文件生成.HTM,例如http://www.mysite.com/mypage.aspx

现在,该网站是密码保护,这些例程与HTTP 401失败,我不知道如何克服这一点。我们不想删除站点身份验证,因为我们不希望任何访问它。

任何人都可以指出我如何对此进行编码,以便我们的内部例程可以访问我们需要的本地页面?

编辑

一些更多的细节。由于这只是一个开发站点,我在托管服务提供商的控制面板中执行了一个快速而脏的配置,以启用文件夹安全性。我添加了根文件夹'/',然后创建了2个用户。这工作正常。当我进入网站时,系统提示出现一个表单身份验证对话框。我输入我的用户名和密码,授予访问权限。

我注意到这个配置在我的root /'网站文件夹中创建了4个文件。他们是.htaccess,.htpasswd,.htgroup和.htfolders。这个网站有很多文件夹。以这种方式配置每一个将是费时和乏味的。因此'/'根配置。

我们的目的是阻止对爬虫/搜索引擎的访问以及偶然访问者绊倒主机名的访问。

此配置会导致一小部分网站无法再通过http://访问自己的页面而不会收到HTTP 401错误的副作用。我喜欢做的是使用<security><ipSecurity>配置所有这些,除了我自己和网站以外的所有黑名单,但提供商不会安装所需的IP模块来执行此操作。

正在接收HTTP 401

的C#代码:

webrequest = (HttpWebRequest)WebRequest.Create(url); 
webrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"; 
webrequest.Timeout = 600000; 
resp = webrequest.GetResponse(); 

我也试过:

CredentialCache credCache = new CredentialCache(); 
credCache.Add(new Uri(url), "Basic", new NetworkCredential("username", "password")); 
webrequest = (HttpWebRequest)WebRequest.Create(url); 
webrequest.Credentials = credCache; 
webrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"; 
webrequest.Timeout = 600000; 
resp = webrequest.GetResponse(); 

这两种方法都收到HTTP 401未授权。我真的不想在C#代码中解决这个问题,因为这个安全问题在live站点上不存在。如果需要,我宁愿在web.config和/或.ht *文件中执行此配置。

所以,我想知道,有什么我可以放置在web.config,这将有助于?有没有人看到这种方式设置的问题? (除了它不工作!:P)

回答

1

如果你想要你可以删除身份验证只有一个页面如下。

<location path="mypage.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 
+0

这是有帮助的。共有7页需要授权。他们都以某种方式走在同一条线上吗?或每个新的部分?虽然,我一直在寻找是否有办法允许localhost或我的主机名完全访问本地站点。这可能吗?像设置路径=要*可能并允许用户=本地主机?这不起作用,因为我已经尝试过了,但也许有一种方法。 – rwkiii

+0

你必须为每个创建新的部分!我想知道,如果登录的用户有权访问mypage.aspx您的代码应该工作!您是否在无人登录时访问此页面?你能告诉我们代码吗? Cheri, –

+0

问题不在用户。目前我们只有2人访问该网站,我们有登录功能。问题是C#代码隐藏无法使用http://访问自己的页面。例如,使用WebResponse和HttpWebRequest。目的是为了生成HTML到PDF。通过使用http:// – rwkiii