我有一个类库。在其中一个类中,我在页面上添加了一个脚本引用,如下所示:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (this.Page != null)
{
ScriptManager sm = ScriptManager.GetCurrent(this.Page);
ServiceReference reference = new ServiceReference("~/Admin/Services/ContactsService.asmx");
reference.InlineScript = true;
sm.Services.Add(reference);
}
}
对于ServiceReference文件路径,有没有办法添加嵌入文件?我希望将所有内容保存在我的类库中,而不是将文件放入网站文件夹中。
答案 0 :(得分:0)
如果我理解你所问的是什么,这是不可能的,因为WebService
是一个实际的编译类,而WebMethod
是一个实际的编译方法。
GetWebResourceUrl方法执行名称所暗示的操作,返回资源。客户端脚本(Javascript)只是一个字符串资源,它不需要在服务器上执行,它只是作为文本发送到客户端。 Web服务(及其方法)需要具有能够响应客户端请求并执行此代码的物理端点。
理论上,如果您使用的是WCF,则可以在运行时确定服务端点的URL,因为WCF将端点与行为分离,并将其定义在web.config中的特定位置。这不允许您将整个“服务”作为WebResource
提供,但它可以避免对URL进行硬编码的需要。如果您正在使用ASMX WebServices,那么您甚至没有该选项,因为ASMX使用类似于ASP.NET页面的标记文件。
如果您担心URL可能会发生变化,即因为您在多个服务器/域上部署此网站,那么最好的做法是将URL外部化为应用程序设置。这样,您只需编辑web.config即可更改用于脚本引用的URL。