关于asp.net:Visual Studio basicHttpBinding 和端点问题

关于asp.net:Visual Studio basicHttpBinding 和端点问题

Visual Studio basicHttpBinding and endpoint problems

我在 VS 2008 中有一个 WPF 应用程序,其中包含一些 Web 服务引用。由于各种原因(最大消息大小、身份验证方法),我需要在 WPF 客户端的 app.config 中为服务绑定手动定义一些设置。

不幸的是,这意味着当我更新项目中的服务引用时,我们最终会遇到一团糟——多个绑定和端点。 Visual Studio 使用数字后缀(即"Service1"作为"Service1"的副本)创建新的绑定和端点,导致配置无效,因为项目中的每个服务引用可能只有一个绑定。

这很容易复制 - 只需在解决方案中创建一个简单的"Hello World"ASP.Net Web 服务和 WPF 应用程序,更改 app.config 绑定中的 maxBufferSize 和 maxReceivedMessageSize,然后更新服务引用。

目前我们正在通过在更新引用后简单地撤消 app.config 上的结帐来解决此问题,但我不禁认为必须有更好的方法!

另外,我们需要手动更改的设置是:

1
2
3
security mode="TransportCredentialOnly"
    transport clientCredentialType="Ntlm" /
/security

和:

1
binding maxBufferSize="655360" maxReceivedMessageSize="655360" /

我们使用服务工厂类,因此如果这些设置能够以某种方式以编程方式进行设置,那将起作用,尽管这些属性似乎没有被公开。


您可以添加第二个端点并使用您需要的配置绑定定义,而不是更改生成的端点,然后在您的代码中将新端点的名称放入您的服务客户端构造函数中。


创建一个使用 svcutil 的 .Bat 文件,用于代理生成,该文件具有适合您项目的设置。这相当容易。点击batfile,每当界面改变时生成新的代理文件很容易。

该批次随后可用于自动构建。然后您只需要设置一次 app.config(或 web.config)。我们一般将不同环境的不同配置分开,例如 dev、test prod。

示例(注意换行符):

1
2
3
4
5
6
7
8
REM generate meta data
call"SVCUTIL.EXE" /t:metadata"MyProject.dll" /reference:"MyReference.dll"

REM making sure the file is writable
attrib -r"MyServiceProxy.cs"

REM create new proxy file
call"SVCUTIL.EXE" /t:code *.wsdl *.xsd /serializable /serializer:Auto /collectionType:System.Collections.Generic.List`1  /out:"MyServiceProxy.cs" /namespace:*,MY.Name.Space /reference:"MyReference.dll"

:)

//W


我们要做的是检查(从源代码管理)由 svcutil.exe 实用程序自动生成的 app.config 和 *.cs 文件,然后我们运行一个运行 svcutil.exe 的批处理文件来检索服务元数据.完成后,我们重新编译代码,确保它正常工作,然后重新检查更新的 app.config 和 *.cs 文件。这比使用经常出错的"添加服务"可靠得多使用 Visual Studio 引用"。


我同意你的观点,svcutil 绝对是添加和更新服务引用的更高级方法。当"右键单击,更新参考"非常接近于单步工作时,它只是需要更多的手动工作。

我想我们可以创建一些批处理文件或其他东西来输出参考代码。即便如此,使用 svcutil 手动签出和更新服务代码可能比仅撤消配置上的签出要多。

无论如何感谢您的建议。


不知何故,我更喜欢直接使用 svcutil.exe,而不是使用 Visual Studio 的"添加服务引用"功能:P 这就是我们在 WCF 项目中所做的。


推荐阅读

    linux开机服务命令行?

    linux开机服务命令行?,系统,工作,地址,信息,服务,设备,数字,第一,设计,发行,l

    linux服务器分区命令?

    linux服务器分区命令?,系统,管理,信息,设备,时间,命令,基础,首次,平均,情况,l

    linux下看服务的命令?

    linux下看服务的命令?,服务,状态,系统,名称,信息,工具,命令,环境,网络,情况,

    linux服务器上传命令?

    linux服务器上传命令?,服务,软件,平台,数据,工具,系统,手机,电脑,设备,官网,

    linux重新服务命令?

    linux重新服务命令?,服务,系统,网络,标准,工作,设备,命令,名称,信息,网络服

    linux网络服务器命令?

    linux网络服务器命令?,地址,网络,系统,名称,信息,工具,状态,中心,灵活,基础,l

    linux网络服务器命令?

    linux网络服务器命令?,地址,网络,系统,名称,信息,工具,状态,中心,灵活,基础,l

    linux服务器基本命令?

    linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,l

    linux服务器下载命令?

    linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,l

    linux命令怎么停服务?

    linux命令怎么停服务?,服务,系统,状态,代码,跨行,软件,情况,第一,名称,命令,l

    linux服务端退出命令?

    linux服务端退出命令?,档案,命令,环境,异常,标准,网络,模式,终端,编辑,文件,l

    linux中启动服务命令?

    linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,l

    linux服务器常用命令?

    linux服务器常用命令?,工作,系统,地址,信息,命令,目录,管理,标准,设备,功能,

    linux使用命令的方法?

    linux使用命令的方法?,系统,信息,工具,标准,数据,命令,左下角,目录,文件夹,

    linux筛选服务命令?

    linux筛选服务命令?,服务,系统,状态,软件,环境,主体,技术,号码,发行,名称,查

    linux服务器保存命令?

    linux服务器保存命令?,时间,状态,档案,电脑,命令,信息,位置,编辑,文件,模式,L

    linux服务器扫盘命令?

    linux服务器扫盘命令?,地址,工作,命令,目录,数据,单位,名称,系统,管理,信息,L

    linux命令切换服务器?

    linux命令切换服务器?,地址,名称,系统,环境,实时,命令,服务器,脚本,路径,版

    linux服务器搭建命令?

    linux服务器搭建命令?,系统,服务,软件,地址,平台,在线,密码,工具,环境,百度,l

    服务器重启命令linux?

    服务器重启命令linux?,工作,标准,设备,服务,系统,名称,命令,百度,网络,密码,