1

サイトを SP2007 から SP2010 に移行中です。このソリューションには、.ASMX ファイルに含まれる Web サービスが含まれています。WCF を使用する必要があることは理解していますが、この Web サービスを WCF を使用するように変換する時間がなく、このプロジェクトは会社の元開発者から継承されたため、このコードのアーキテクチャを理解しようとしています。

私たちが遭遇した問題は、サービスを呼び出すと、「この Web サービスはhttp://tempuri.org/をデフォルトの名前空間として使用しています」という警告が表示されることです。

Web サービスの呼び出し時のエラーを示すスクリーンショット

以下に示すように、Web サービスの定義で名前空間プロパティを既に変更しています。

[WebService(Namespace = "http://localhost")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class searchService : WebService
{
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public resultWrapper search(string query)
    {
        ....
    }
}

ただし、Web サービスの WSDL を表示すると、次のようになります。

<wsdl:definitions targetNamespace="http://tempuri.org"><wsdl:types/><wsdl:service 
name="search"/></wsdl:definitions>

既に元のソリューションを撤回し、「クリーン ソリューション」操作を実行してソリューションを再デプロイしましたが、これまでのところ何も機能していません。Web サービス定義で指定した名前空間に基づいて WSDL を強制的に更新するために何をする必要があるか、または更新するために WSDL 情報の設定を変更する必要がある別の場所があるかどうかはわかりません。

4

1 に答える 1

0

そのため、私たちのチームの別の開発者が問題を解決しました。

.asmx.cs ファイルの名前空間の更新に加えて、.asmx ページの codeBehind と class 属性を更新する必要があることが判明しました。

基本的に、codeBehind 属性は .asmx.cs ファイルを指す必要があり、Class 属性は、使用している名前空間とクラスに適切に一致する必要がありました。SharePoint の既定の名前空間とクラスを指していたため、エラーがスローされていました。

于 2013-01-28T22:29:39.317 に答える