1

我有一个类库。在其中一个类中,我在页面上添加了一个脚本引用,如下所示:

    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 文件路径,有没有办法改为添加嵌入文件?我想将所有内容都保留在我的类库中,而不是将文件放入网站文件夹中。

4

1 回答 1

0

如果我正确理解您的要求,这是不可能的,因为 aWebService是实际编译的类,而 aWebMethod是实际编译的方法。

GetWebResourceUrl方法顾名思义,返回一个资源。客户端脚本(Javascript)只是一个字符串资源,它不需要在服务器上执行,它只是作为文本发送给客户端。Web 服务(及其方法)需要具有能够响应客户端请求并执行此代码的物理端点。

理论上,如果您使用 WCF,您可以在运行时确定服务端点的 URL,因为 WCF 将端点与行为分离,并在 web.config 中的特定位置定义它。这不允许您提供整个“服务”,WebResource但可以避免对 URL 进行硬编码。如果您使用的是 ASMX WebServices,那么您甚至没有该选项,因为 ASMX 使用类似于 ASP.NET 页面的标记文件。

如果您担心 URL 可能会更改,即因为您将此网站部署在多个服务器/域上,那么最好的做法是将 URL 作为应用程序设置进行外部化。这样,您只需编辑 web.config 即可更改用于脚本引用的 URL。

于 2010-04-03T23:33:08.350 回答