2011-06-28 5 views
0

私は自分のアプリケーションでASMXサービスを使用しており、特定のWebサービスURLを指していることを望みます。異なるホストヘッダーを使用するASMX Javascriptプロキシ

私は以下のようにそれを定義している:ここで

string serviceUrl = SPContext.Current.Web.Url + "/_vti_bin/MyService.asmx"; 

ScriptManager scriptManager = ScriptManager.GetCurrent(Page); 

if (scriptManager != null) scriptManager.Services.Add(new ServiceReference(serviceUrl)); 
else 
{ 
    scriptManager = new ScriptManager(); 
    scriptManager.Services.Add(new ServiceReference(serviceUrl)); 

    Page.Form.Controls.Add(scriptManager); 
} 

SPContext.Current.Web.Url ==> http://mysite/mysubsite

をしかし、私は以下のようにJavaScriptからサービスを呼び出す際に、Firebugの中にホストヘッダー検査は、Javascriptのプロキシが実際に呼び出していることを示唆していますサービス:http://mysite/_vti_bin/MyService.asmx/Execute

MyWorkCore.API.Execute("GetData", dataXml, function (response) { 
    // doing something here 
}); 
+0

これが問題の原因であるかどうかわかりませんが、asmxの間違った場所を指している可能性があります。 "_vti_bin"フォルダは、フロントページ拡張が作成するフォルダです。 asmxファイルは、サイトのルートまたはWebサイトのルート内のフォルダ構造内に存在する必要があります。それはビンまたは "_vti_bin"に存在すべきではありません。 –

+0

@Alex Mendez:すべてのSharePointサービスは_vti_binにあります – Moon

+0

私はsharepointを使ったことがないので、これは認識していませんでした。情報をありがとう。現時点では、他のことは考えられません。 –

答えて

0

指定したサーバーの相対パスは、表示されているとおりです。このようにパスを使用して解決してみてください。

~site/_vti_bin/MyService.asmx 

SPUtilityクラスであり、現在のSPSiteに解決プレフィックスと、そのような接頭辞パスを解決する機能「〜サイト」(現在のSPWebのURLに解決)と「〜sitecollection」 URL。

ここで、「現在の」とは、SPSiteの場合はSPContext.Current.Siteを、SPWebの場合はSPContext.Current.Webを意味します。

関連する問題