"ドロップイン" Webサービスを作成することはできますか?私がしたいのは、.svcファイルを作成して、IIS上のWebディレクトリに置くことができ、他のファイルをインストールしたり、設定ファイルを変更したりせずに、URL経由でアクセス(および実行)することができます。.svcファイルに完全に含まれるASP.NET Webサービスを作成することは可能ですか?
私は、.svcファイルをアップロードできるWebアプリケーションのセキュリティ上の問題を調査しています。 .svcファイルをアップロードして実行することができれば、このアプリケーションにとって大きなセキュリティ上の問題になります。残念ながら、私は.NET開発者ではないので、おそらくここでは多くのことがありません。
"サービスホスト"指令の後にサービスインターフェイスと実装を.svcファイルに直接入れることが可能であることは知っています。サービス「EchoServiceは」ゼロのアプリケーション(非インフラストラクチャ)のエンドポイントを持っている:私は、私は、.NETからの例外を取得http://localhost/test1.svcにアクセスする際
<%@ ServiceHost Language = "C#" Debug = "true" Service = "EchoService" %>
public interface IEchoService
{
string Hello();
}
public class EchoService : IEchoService
{
public string Hello()
{
return "Hello";
}
}
:今ここに私の.SVCファイルです。これは、アプリケーションに設定ファイルが見つからなかったか、またはサービス名に一致するサービス要素が構成ファイルに見つからないか、またはサービス要素にエンドポイントが定義されていないことが原因です。
通常、web.configファイルまたはapp.configファイルでWebサービスのエンドポイントを設定することになっていることを理解しています。いくつかのグーグルでは、独自のServiceHostとServiceCodeFactoryを定義してプログラムでエンドポイントを設定できることも学びました。私はいくつかの例を見つけましたが、それらを働かせることはできませんでした。
実行可能なサービスを得るために、上記の例に必要なコードを追加する方法を示す、または「実行しようとしていることは不可能です」と誰かが私に言うことができたら本当に感謝します。
更新:ジョシュの提案を使用して、私はついにそれを動作させました。作業コードについては、私の答えを参照してください。
答えには関係ありませんが、あなた自身を守るためにできることがいくつかあります。すべてのアップロードを、スクリプトや実行可能ファイルが実行されないディレクトリ(IIS設定)に置くことができます。また、アップロードコードを変更してsvcなどの危険な拡張機能を除外することもできます。 – Josh