Page.ResolveUrl()在VS2010开发服务器上不工作

本文关键字:服务器 工作 开发 VS2010 ResolveUrl Page | 更新日期: 2023-09-27 18:12:07

我试图使用一个现有的,旧的,ASP。Net web应用程序,它将作为我们项目的主UI。web应用程序使用了许多用户控件,其中有很多:

<element attribute='<%=Page.ResolveUrl("~/path/to/resource")' ...
然而,我有一个问题。如果应用程序部署到IIS,那么对Page.ResolveUrl()的这些调用可以正常工作。但是如果我尝试在Visual Studio Development Server中运行这个应用程序,它不会解析任何url(即,没有应用样式,没有渲染图像等)
// If deployed in IIS, the style tag renders like this (and works):
<link href="/adminconsole/styles/styles.css" ...
// On the VS Dev Server:
<link href="/styles/styles.css" ...

我想要的是,无论应用程序是部署到IIS,还是运行在Visual Studio Development Server上,这些调用都能"正常工作"。

一些相关信息:

web应用程序没有使用母版页。它包括头作为用户控件:(

Page.ResolveUrl()在VS2010开发服务器上不工作

)

VS Dev web服务器通常只有一个站点,并在具有特定端口号的本地主机上访问。检查web选项卡中的项目属性,看看是否可以将该Url更改为IIS中的站点名称。如果不可能,如果你不愿意改变代码,让你的开发人员使用本地IIS或IIS express,而不是那个小的VS玩具。

根据我的经验,在IIS上开发和测试要好得多,因为你在一个更类似于生产环境的环境中工作,如果有任何问题,你会更早发现问题,所以有更多的时间做出反应,而不是在上线前的昨晚。

我最近不得不做这样的事情,但不是使用<%=ResolveURL("~/path/to/file")%>,而是使用<%=ResolveURL("relative/path/to/file")%>尝试看看是否有效。

我也认为在本地IIS上测试/调试肯定更好。请记住,Cassini (VS附带的玩具web服务器)是在开发人员的凭证下运行的,因此与直接在IIS上运行网站相比,本地文件系统的权限是非常不同的。