2

MSDNによると、カスタムWebサービスを展開するには、*wsdl.aspxファイルと*disco.aspxファイルを作成し、それらを.asmxとともに_vti_binフォルダー(C:\ Program Files \ Common Files \ Microsoft Shared \ Web Server)に配置する必要があります。 Extensions \ 14 \ isapi)。そして、SharePoint仮想ディレクトリのルートのbinフォルダの下にdllを置きます。それは私にとって正しく機能します。

ただし、これらの*wsdl.aspxファイルと*disco.aspxファイルを作成せずに、ルート仮想ディレクトリの下に.asmxファイルを配置した場合もわかりました。上記の方法よりもはるかに簡単に機能します。だから私はこのように潜在的な問題は何であるか疑問に思っていますか?

4

3 に答える 3

2

WSDL および DISCO ファイルがないと、人々の Web サービス クライアント/コンシューマは、サービスの契約を「発見」するのに苦労する可能性があります。それが気にならない場合は、心配しないでください。

于 2010-01-14T19:32:49.127 に答える
1

SharePoint 2007 でいくつかの Web サービスを作成しましたが、それらは単純に .xml として展開されましhttp://.../_layouts/mySubFolder/service.asmxた。できます!SharePoint の場合、Web サービスのプレゼンテーション層が HTML であるか XML であるかは問題ではありません (どちらの場合も、セキュリティを適用する必要がありますhttp://server/_layouts/mySubFolder/service.asmxhttp://server/sites/subsite/_layouts/mySubFolder/service.asmx

それについて間違っていること

  • 「レイアウト」という言葉は、「それがどのように見えるかに関する何か」を意味します..これは、Web サービスについて話す場合には当てはまりません
  • WCF サービスが登場する SPS2010 に移行する場合は異なります。ただし、私はまだ SPS2010 で遊んだことがなく、どのように違うのかまだわかりません。(ここでそれについて何か - http://blog.mastykarz.nl/wcf-sharepoint-context/
于 2010-01-14T07:07:24.717 に答える
0

かなり古い投稿ですが、これまでの回答では、SharePoint がこのように設定されている理由に関する詳細が提供されているとは思えないため、これに追加すると思いました。

SharePoint の ISAPI\vti_bin に Web サービスを展開する理由は、SharePoint がサービスの現在の仮想パスに基づいてサービスの正確な検出と WSDL ファイルを構築できるようにするために、このフォルダーへの要求に対して特定の変更が加えられているためです。 IIS サイトのパス。

具体的には、wsdisco.aspx と wswsdl.aspx がこの仮想ディレクトリへの要求を処理し、関連する disco.aspx と wsdl.aspx を呼び出して、現在の SharePoint URL に基づいて検出 xml または wsdl xml を正しく生成します。

http://sharepointsite.com/sitecol/subsite/_vti_bin/lists.asmxのプロジェクトにサービス参照を追加すると、その URL で行われたリクエストのコンテキストは、予想どおり /sitecol/subsite に関連します。

ただし、サービス参照をhttp://sharepointsite.com/sitecol/subsite/ _layouts/MyCustSvc.asmxに追加すると、コンテキストはhttp://sharepointsite.com/に固定されます。これは、ASP.NET のデフォルトの wsdl ジェネレーターがSharePoint 仮想パスを認識します。その場合、サービス内の SPContext への呼び出しは期待どおりに機能しません。

これを説明する例を含む優れた投稿がここにあります: カスタム SharePoint Web サービス ファイルをどこにデプロイしますか?

于 2012-01-17T06:11:26.860 に答える