λ΄ ASP.NET Core MVC νλ‘μ νΈμμ .apk νμΌμ μ 곡νκ³ μΆμλ° 404λ₯Ό λ°ννλ―λ‘ ν μ μμ΅λλ€.
VS 2017μμ κΈ°λ³Έ ν
νλ¦Ώμ μ¬μ©νμ¬ κ°λ¨ν ASP.NET Core MVC νλ‘μ νΈλ₯Ό λ§λ€κ³ .apk
νμΌμ wwwroot
ν΄λμ μΆκ°ν λ€μ /application.apk
λ₯Ό μ¬μ©νμ¬ μ κ·Όμ μλνμ΅λλ€. κΈ°λ³Έ ν
νλ¦Ώμμ app.UseStaticFiles()
κ° νΈμΆλκΈ° λλ¬Έμ /favicon.ico
κ° μλνλ λμ μλνμ§ μκ³ ν΄λΉ λλ ν 리μ λ€λ₯Έ μ μ 컨ν
μΈ κ° μλν©λλ€.
κ·Έλ° λ€μ ꡬμ±μ λ³κ²½νλ €κ³ μλνκ³ wwwroot
ν΄λμμ μ μ μ½ν
μΈ λ₯Ό κ°μ Έμ€κ³ application.apk
λ₯Ό νλ‘μ νΈμ λ£¨νΈ λλ ν°λ¦¬( wwwroot
μμ ν ν΄λ μλ‘)μ λ£κ³ λ€μμ ꡬμ±νμ΅λλ€. λ€μμ μ¬μ©νλ νλ‘μ νΈ:
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory())
});
λ€μ κ²°κ³Όκ° μμ΅λλ€. 404λ₯Ό λ°μ΅λλ€.
κ·Έλ° λ€μ Web.config νμΌμ λ§λ€κ³ λ€μ MIME μ νμ μΆκ°νμ΅λλ€.
<staticContent>
<mimeMap fileExtension=".apk" mimeType="application/vnd.android.package-archive" />
</staticContent>
κ·Έλλ .apk νμΌμ μ 곡νμ§ μμ΅λλ€.
μ΄λ»κ² ν΄μΌ νλμ?
κ·Έλ° λ€μ Web.config νμΌμ λ§λ€κ³ μ΄ MIME μ νμ μΆκ°νμ΅λλ€.
web.configλ IISλ₯Ό ꡬμ±νκΈ° μν κ²μ λλ€. IISλ₯Ό μ¬μ©νμ¬ μ μ νμΌμ μ 곡νμ§ μλ ν μ΄κ²μ μ°¨μ΄κ° μμ΅λλ€.
λ¬Έμ μ λͺ μλ λλ‘:
μ μ νμΌ λ―Έλ€μ¨μ΄λ κ±°μ 400κ°μ μλ €μ§ νμΌ μ½ν μΈ μ νμ μ΄ν΄ν©λλ€. μ¬μ©μκ° μ μ μλ νμΌ νμμ νμΌμ μμ²νλ©΄ μ μ νμΌ λ―Έλ€μ¨μ΄κ° HTTP 404(μ°Ύμ μ μμ) μλ΅μ λ°νν©λλ€.
μ μ νμΌ λ―Έλ€μ¨μ΄λ₯Ό μ¬μ©νμ¬ APK νμΌμ μ 곡νλ €λ©΄ ServeUnknownFileTypes
λ₯Ό μΌκ±°λ FileExtensionContentTypeProvider
λ₯Ό μ¬μ©νμ¬ νμ₯μλ₯Ό μΆκ°ν μ μμ΅λλ€.
FileExtensionContentTypeProvider
λ₯Ό μ¬μ©νμ¬ μΆκ° νμ₯ μΆκ°(κΆμ₯)var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".apk"] = "application/vnd.android.package-archive";
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()),
ContentTypeProvider = provider
});
μ΄κ²μ μ€λͺ μμλ μ€λͺ λμ΄ μμ΅λλ€ .
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()),
ServeUnknownFileTypes = true
});
κ·Έλ¬λ 보μ μνμ΄ μμ μ μμΌλ―λ‘ κΆμ₯νμ§ μμ΅λλ€.
ServeUnknownFileTypes
λ₯Ό νμ±ννλ©΄ 보μμ μνν©λλ€. κΈ°λ³Έμ μΌλ‘ λΉνμ±νλμ΄ μμΌλ―λ‘ μ¬μ©νμ§ μλ κ²μ΄ μ’μ΅λλ€.FileExtensionContentTypeProvider
λ λΉνμ€ νμ₯μλ₯Ό κ°μ§ νμΌμ μ 곡νλ κ²λ³΄λ€ μμ ν λμμ μ 곡ν©λλ€.
μ΄κ²μ μ€λͺ μμλ μ€λͺ λμ΄ μμ΅λλ€ .
μ’μ μ€λͺ . κ°μ¬ν©λλ€.
μ°λ½ ν΄μ£Όμ μ κ°μ¬ν©λλ€. κ·νκ° μ κΈ°ν μ§λ¬Έμ λν λ΅λ³μ΄ λμλ€κ³ λ―Ώμ΅λλ€. μ¬μ ν ν λ‘ μ κ³μν νμκ° μλ€κ³ μκ°λλ©΄ μμ λ‘κ² ν λ‘ μ λ€μ μ΄κ³ μ견μ μΆκ°νμμμ€.
κ°μ₯ μ μ©ν λκΈ
web.configλ IISλ₯Ό ꡬμ±νκΈ° μν κ²μ λλ€. IISλ₯Ό μ¬μ©νμ¬ μ μ νμΌμ μ 곡νμ§ μλ ν μ΄κ²μ μ°¨μ΄κ° μμ΅λλ€.
λ¬Έμ μ λͺ μλ λλ‘:
μ μ νμΌ λ―Έλ€μ¨μ΄λ₯Ό μ¬μ©νμ¬ APK νμΌμ μ 곡νλ €λ©΄
ServeUnknownFileTypes
λ₯Ό μΌκ±°λFileExtensionContentTypeProvider
λ₯Ό μ¬μ©νμ¬ νμ₯μλ₯Ό μΆκ°ν μ μμ΅λλ€.FileExtensionContentTypeProvider
λ₯Ό μ¬μ©νμ¬ μΆκ° νμ₯ μΆκ°(κΆμ₯)μ΄κ²μ μ€λͺ μμλ μ€λͺ λμ΄ μμ΅λλ€ .
μ μ μλ νμΌ νμ μ 곡
κ·Έλ¬λ 보μ μνμ΄ μμ μ μμΌλ―λ‘ κΆμ₯νμ§ μμ΅λλ€.
μ΄κ²μ μ€λͺ μμλ μ€λͺ λμ΄ μμ΅λλ€ .