使用asp.net在开发机器上创建无cookie应用程序

时间:2010-02-23 00:42:33

标签: asp.net iis-7 cookieless

我试着在ServerFault上发布这个没有运气,所以我在这里尝试。

我正在考虑设置一个新域来托管我网站上的静态内容,并使其像使用static domain的Stackoverflow一样无cookie。 所以在继续购买域并设置它之前,我想首先在我的开发机器上测试它在localhost下(我必须提到我计划在我的新域上运行IIS以获取静态文件)。

因此,我在IIS下创建了一个新应用程序,并禁用了会话状态和表单身份验证。当我的主应用程序需要css,images和js等资源时,我会使用托管它们的“静态”应用程序的路径。

问题在于,当我查看请求和请求文件的响应时,他们仍然定义了session_id cookie以及asp.net身份验证cookie。

是否有可能完成我在开发机器上尝试做的事情,或者我是否必须继续购买新的域名,希望将事情做好?我试着阅读关于cookieless域名,但无法弄清楚我可能会遗漏什么。

更新

我的设置如下。 我创建了两个Web应用程序。 - 该网站的一个Web应用程序 - 一个静态的一切Web应用程序(css,图像,脚本......)

两个应用程序都添加到IIS中,并且它们都不是另一个的子应用程序。 (它们都是IIS结构下的独立网站。)

我想知道两个网站在同一个IP下是否可以解释我的结果,但是当我部署这两个网站时,问题就消失了。

4 个答案:

答案 0 :(得分:7)

确保您拥有以下web.config设置:

  • <sessionState mode="Off" />
  • <authentication mode="None" />

我认为这就是全部,尽管我还没有测试过。为了安全起见,您可以使用Creating Static Content Website in IIS 7中的建议来禁用所有模块,并且只在必要时重新启用它们:

<system.webserver> 
    <modules>
        <clear />
        <add name="StaticFileModule" ... />
        ...
    </modules>
    ...
</system.webserver>

PS:有关设置缓存值的提示,请参阅this answer

答案 1 :(得分:1)

基本理念:

  1. 在IIS中创建一个新网站(将其映射到子网域或将其设置为一个完全独立的网站。如果用户从http://example.com而不是http://www.example.com访问您的网站,则有时无法使用suddomains第一种情况的cookie也可能会被发送到新的子域。)
  2. 在IIS中为您的新站点禁用ASP.NET。如果您只是提供静态内容,那么您不需要启用ASP.Net
  3. 加载静态内容并链接
  4. 参考:
      - Stopping cookies being set from a domain (aka "cookieless domain") to increase site performance
      - How to respect "Serve static content from a cookieless domain" page speed rule in IIS6?
      - Avoiding cookies while requesting static content

答案 2 :(得分:0)

  

问题在于,当我看着   请求和响应   请求的文件,他们仍然有   session_id cookie定义

这是因为HttpRequest.CookiesRequest对象的属性。


这可能有助于理解

答案 3 :(得分:0)

您是否在Page的Load方法结束时尝试了Response.Cookies.Clear()? 这应该消除Response对象中的所有cookie,并且不会将cookie发送到客户端。这可以在Web模块或HttpHandler中完成。